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