Я узнал, что мы не можем создать экземпляр абстрактного класса. Но сегодня я протестировал несколько кодов и меня это смущает.
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 (). И компилируется успешно, без ошибок! ИМО, прежде чем что-то вернуть, компьютер должен создать объект этого типа. И здесь он должен создать объект abstractClass до того, как вернет m.function () , что я не могу понять. я думаю, что мы не можем создать экземпляр абстрактного класса означает, что мы не можем создать объект абстрактного класса или мы не можем создать новый класс (например, abstractClass m = new abstractClass () является недопустимым
) . Но из приведенных выше кодов кажется, что мы можем создать объект абстрактного класса. как это реализовать? Что делает компьютер, когда видит код для кода abstractClass m
? Мы не можем сказать, что Java создала экземпляр абстрактного класса m
для кода abstractClass m
? и если java не создает экземпляр класса abstractClass
, как он может вернуть объект abstractClass
в коде abstract abstractClass a_function ();
?