java 构造函数深入学习


 *来自对构造函数的继承,及相关调用思考得到,主要还是从《java面向对象编程》得来
 
 *在多级继承的情况下,将从继承树的最上层的父类开始,依次执行各个类的构造方法,
  这可以保证子类对象从所有直接或间接父类中继承来的实例都被正确的初始化。
 
 *当子类的构造方法没有用super语句显示的调用父类的构造方法,而父类中又没有提供默
  认的构造方法(jdk提供的默认构造方法)时,将会出现编译错误。

public class Grapha {

// public Grapha() {
//  System.out.println("Grapha()");
// }
 
 public Grapha(String name) {
  System.out.println("Grapha()");
 }
}

class Father extends Grapha{

 /**
 * a compile error happen. 
 * implicit super constructor Grapha() is undifined,must explicity invoke another constructor
 **/
 public Father() {                  
  System.out.println("Father()");
 }
 /**
 * a compile error happen. 
 * implicit super constructor Grapha() is undifined,must explicity invoke another constructor
 **/
 public Father(String name){
 } 
}

  *从上面可以得出,如果一个类即不允许其他程序员用new语句来构造它的实例,又不允许它有子类,就可以
   把它所有的构造方法定义为private的。
  
   另外一种使一个类不能有子类的方法是将类声明改为final的。
  
   由上面可以想到用静态工厂模式:
      *单例模式(singleton)
      *枚举类
      *具有实例缓存的类
      *具有实例缓存的不可变类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值