父类没有实例化的情况是不可能出现的
因为子类的构造函数首先会显式或者隐式的调用父类的构造函数 ( super() )

解决方案 »

  1.   

    只要子類被初始化了,那麽父類就一定會被正確初始化的在構造器裏,如果沒有顯式説明使用哪個父類的構造函數,就會默認調用super(),也就是父類中沒有參數的構造器,(如果在class中沒有聲明任何構造器,就會自動建一個參數的構造器,但是如果已經聲明了一個,就不會構造默認得了)因此,你可以嘗試一下父類-子類的組合,看一下分別抱什麽錯,或顯式什麽,就會知道"只要子類被初始化了,那麽父類就一定會被正確初始化的"的意思了1class A{
      public A(){
        System.out.println("A()");
      }
    }class B extends A{}2class A{
       public void A(int x){
         System.out.println("A("+x+")");
       }
    }class B extends A{}class C extends A{
      public C(){
        System.out.println("C()");
        super(0);
      }
    }class D extends A{
      public D(){
        super(0);
        System.out.println("D()");
      }
    }class E extends D{}
      

  2.   

    兄弟,给你推荐一本书《Thinking in java》,里面讲得再明白不过了。你用这本书理解了你自己所提的问题对你理解java将有质的提高。
    这本书网上很多。
      

  3.   

    父类中,被声明为final的方法是不能被overloading的,访问权被定私有的类成员是不可见的,当你extends了一个类,他的部他方法和成员被随之继承过到子类里。super()自动的放在子类的构造函数的首行,否则无效,来初始化父类。当你的调用方法时,先从子类搜索并调用,若子类不存在就会向上一级类搜索,直到object类。如果父类与子类具有相同的方法,但是又要调用父类的方法,可以应用super来帮忙。当然,还存在一种向上转型。
    可以参考,《java编程思想》《Java语言>
    clsaa A{
      ...
      int j;
      public A(){...}
      public A(int i){...}
      public c(String str){...}
    }
    class B{
      int j:
      int b;
      
      public B(){
         super();//这行代码编译器自动补写
         ....}  public A(int i){}
      public c(int i){}
      
      ...
      public static void main(String[] arg){
      B bbb=new B();
      bbb.c(2);//调用子类方法
      bbb.c("2“);//调用继承过来的方法
      super.j;
      bbb.j;
    }