Я узнал, что мы не можем создать экземпляр абстрактного класса. Но сегодня я протестировал некоторые коды, и я смущен этим.
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