Так что я просто пытался изучить java, исходящую из фона C++, как часть быстрого разгона. Я только что реализовал базовый класс из абстрактного класса, как показано ниже
abstract class my_abstract_class
{
abstract void my_abstract_function();
}
class my_concrete_class extends my_abstract_class
{
}
public class ConcreteClasses {
public static void main(String args[])
{
my_concrete_class my_concrete_class = new my_concrete_class();
}
Это проходит, хотя мой конкретный класс не реализует абстрактный метод и не является абстрактным классом. Не следует ли выбросить ошибку компиляции? Или я пропустил что-то очень основное здесь
PS: ошибка показана eclipse как часть статического анализа, но мне все еще интересно, как эта программа компилируется и запускается без каких-либо проблем
Компилятор Eclipse немного особенный. Если код не компилируется, он генерирует сообщения об ошибках, но все же компилирует классы, создавая фиктивные методы, бросая исключения.
Если вы запускаете проект с ошибками компиляции, он предупреждает вас, что вы не должны этого делать, но вы все равно можете продолжить.
Просто не делайте этого и не игнорируйте сообщения об ошибках компилятора.