构造器顿悟

2007/3/1 星期四

  学习父类,子类 构造器有感,百尺竿头,又近了一步。:)
 
  继承对面向对象的诠释可谓是淋漓尽致阿。它抽象了世界上有继承关系的事物。
不如说人类。所以,下面就把小生对构造器的一点感悟与大家分享。

    1.子类继承了父类的一些东西(可能不是全部,比如说私有成员 private),但它

总要继承一些东西的,或多或少。
       这就好比人类中,父亲对财产的分配。每个子女都会从父亲那继承一些东西,有

相同的 ,也有不同的。
   
     2.要创建子类的构造器必须隐式(只能隐式的调用父类中的无参构造器)或显式的

调用父类的构造器。而且在实例化子类对象时,也会首先实例化父类对象,如果继承的

层次过多的话,无疑会造成效率的下降,因此,要谨慎使用继承。:)
    
      这就好比人类中,没有父亲,哪会有儿子的存在。

//example 1   隐式调用空参构造器

  public  class   Father{

}
 
   class    Son extends  Father{

}

//这样,不会出错,因为jvm在构造默认的子类构造器时会自动隐式调用父类默认的无参

构造器。

//example 2 父类重载默认的无参构造器,而且没有提供无参构造器

  public  class   Father{

    public  Father(String s){
}

}

  class   Son   extends   Father{
}

//这样会抱错,没有定义隐式的无参构造器。 因为父类重载了默认的无参构造器,而且

又没有提供无参构造器,而隐式调用的只能是父类的无参构造器,所以会抱错。

  如果子类构造器的参数列表比父类构造器的参数列表少,而父类中又没有无参构造器

,则必须在子类的构造器中显式的调用父类提供的构造器,而多出的参数则要被声明为

子类的静态成员变量。

//example  3


    public  class   Father{

    public  Father(String s){
}

}

  class   Son   extends   Father{
  //  声明构造器要用到的变量,必须为static
    
           static   String  s;
             public  Son(){        
             super(s);             

              }
   
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值