Interface and Abstract stuff

抽象类的构造函数问题
抽象类一定有构造方法,你不写编译器帮你加。因为子类的构造方法会调用super(args ...)调用父类的构造函数,如果父类没有子类需要的调用的构造函数,就会报错
构造函数被用来建立一个对象实例,但是你不能建立一个抽象类型的实例,抽象类型的构造函数就仅仅能够被它的继承类型使用
抽象类可以you构造函数的,当子类继承父类后,用子类去构建对象的时候,子类构造函数中会有个默认的super指向父类,
调用父类的构造函数super()(无参构造函数)。
注意如果定义了父类的有参构造函数,并且没有显示的提供无参构造函数 覆盖继承自Object的无参构造函数,
则调用父类无参构造函数(即继承自Object的)会失败的,因为已经被覆盖
如果在父类(也就是抽象类)中有显示的写了有参数的构造函数,
如果在父类有无参构造函数(显示写无参构造函数)
在子类的构造函数里 如果没有显示的调用父类的有参构造函数super(args...), 
子类构造函数都是调用默认的 父类的无参构造函数
在子类的构造函数里 如果有显示的调用父类的有参构造函数super(args...), 或者无参构造函数
均可正常调用
如果在父类没有无参构造函数(继承自Object的默认无参构造函数被有参构造函数覆盖)
在子类的构造函数里要显示的调用父类的有参构造函数,否则编译器报错,语法错误
如果父类(也就是抽象类)中没有有参数的构造函数,
无论在父类有没有无参构造函数
子类构造函数里是否显示调用 父类的无参构造函数,均可正常调用


接口

接口中不能定义构造器的理由(以下来源网页)
1. 构造器用于初始化成员变量,接口没有普通成员变量(接口可以有final static类型的成员变量)
2. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序

3. 构造器是属于类自己的,不能继承。因为是纯虚的,接口不需要构造器


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值