如何在它的基类中创建子类对象?
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文件,因此您可以创建这样的对象。
它很简单,因为你可以在同一类类的类中创建一个对象,你也可以创建它的子类类型。
您无法在父类中创建子类的位置在构造函数中。