Я узнал, что мы не можем создать экземпляр абстрактного класса. Но сегодня я протестировал некоторые коды, и я смущен этим.
package MainPackage;
abstract class abstractClass {
abstract abstractClass a_function();
}
public class Src {
abstractClass m;
public abstractClass abstractClassTest() {
return m.a_function();
}
public static void main(String args[]) {
System.out.println("Hello world!");
}
}
Здесь я создаю абстрактный класс abstractClass и возвращаю его в функцию abstractClassTest(). И компилируется успешно без ошибок! IMO, прежде чем что-то возвращать, компьютер должен создать объект этого типа. И здесь он должен создать объект abstractClass перед return m.function(), что я не могу понять. я думаю, что мы не можем создать экземпляр абстрактного класса означает, что мы не можем создать объект абстрактного класса или мы не могу создать новый класс (например, abstractClass m = new abstractClass() is illegal
). Но из кодов выше кажется, что мы можем создать объект абстрактного класса. как это реализовать? Что делает компьютер для кода abstractClass m
, когда видит код? Мы не можем сказать, что Java создала экземпляр абстрактного класса m
для кода abstractClass m
? и если java не создает экземпляр класса abstractClass
, как он может вернуть объект abstractClass
в коде abstract abstractClass a_function();
?
new
— так в чем может быть проблема? - person yshavit   schedule 27.01.2012