2011-03-27 63 views
1
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(); 
} 
} 
+3

也许你可以添加更多的信息到你的问题。仅仅从顶线和一些源代码,不清楚你的问题是什么。 – 2011-03-27 12:06:42

+1

为什么不可能? – David 2011-03-27 12:08:30

回答

0

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

2

你的问题的症结似乎是,你正在创建一个amit类的实例,它的方法的基类arijit,你想知道这怎么可能。

为什么不可能?您的main方法通过名称引用子类,因此它就像从这个角度来看任何其他类。如果你喜欢,你也可以在非静态成员中完成。

建筑学,它通常表明如果基类知道其子类的隐密细节(如名称),那么通常表明您的结构存在问题;这不是通常的做法。

1

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

在编译时arijit的结构是众所周知的。在课程的中途没有关系,主要的是使用了一个子类,因为这是一个运行时的事情。

但我承认,Java编译器是不是所有的愚蠢:)

1

当您编译方案二.class文件形成,即arijit.class和amit.class。 所以当你的程序被解释时,解释器知道两个.class文件,因此你可以创建类似的对象。

0

无法在父类中创建子类的地方在构造函数中。

相关问题