如何在它的基类中创建子类对象?

class arijit { public static void main(String args[]) { System.out.println("Base class main"); amit ab=new amit(); //how is it possible as the sub class object also holds base class ab.a(); ab.ma(); } public void m() { System.out.println("Base class method"); } } class amit extends arijit { public void a() { System.out.println("Sub Class method"); m(); } } 

您的问题的关键似乎是您正在其基类的main方法arijit创建amit类的实例,并且您想知道这是如何可能的。

为什么不可能? 您的main方法按名称引用子类,因此它就像从该角度看的任何其他类一样。 如果您愿意,也可以在非静态成员中执行此操作。

在架构上 ,它通常表明如果基类知道其子类的私密细节(如名称),则结构存在问题; 这不是通常的方式。

也许你需要区分编译时和运行时

在编译时,arijit的结构是众所周知的。 在类的中途,在main中,使用子类并不重要,因为这是运行时的事情。

但我承认,Java编译器并不是那么愚蠢:)

编译程序时,会形成两个.class文件,即arijit.class和amit.class。 因此,当您的程序被解释时,解释器知道两个.class文件,因此您可以创建这样的对象。

它很简单,因为你可以在同一类类的类中创建一个对象,你也可以创建它的子类类型。

您无法在父类中创建子类的位置在构造函数中。