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

时间:2011-03-27 12:00:35

标签: java

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();
 }
}

5 个答案:

答案 0 :(得分:2)

您的问题的关键似乎是您在其基类amit的{​​{1}}方法中创建了main类的实例,而您却在想怎么可能。

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

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

答案 1 :(得分:1)

也许您需要将编译时间与运行时区分开来。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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