关于子类和父类的构造方法的问题
2015-09-24 23:47
225 查看
当子类调用无参构造函数时,该子类的无参构造函数在第一句默认调用了父类的无参构造函数,即下面两端代码是等价的
所以,如果子类拥有无参的构造函数,父类一定要有一个无参的构造函数,或者在子类的无参构造函数中第一句调用父类的其他构造函数。
下面的子类的构造方法会报错,因为子类中有无参的构造方法,而父类中没有无参的构造方法,当调用子类的无参构造方法时,系统会默认先调用父类的无参构造方法,而此时系统找不到父类的无参构造构造方法,所以会报错
解决方法1:给父类添加一个无参的构造方法
解决方法2:在子类的无参构造方法中显式调用父类中的有参构造方法
最后再说一句,子类不会继承父类的构造方法,更没有子类重写父类的构造方法一说。子类和父类的名称不同,而方法重写需要方法名相同,显然,这一点就已经否决了子类可以重写父类的构造方法的说法
public class Child extends Parent { Child() { } }
public class Child extends Parent { Child() { super(); } }
所以,如果子类拥有无参的构造函数,父类一定要有一个无参的构造函数,或者在子类的无参构造函数中第一句调用父类的其他构造函数。
下面的子类的构造方法会报错,因为子类中有无参的构造方法,而父类中没有无参的构造方法,当调用子类的无参构造方法时,系统会默认先调用父类的无参构造方法,而此时系统找不到父类的无参构造构造方法,所以会报错
public class Parent { Parent(String name) { } }
public class Child extends Parent { Child() { } }
解决方法1:给父类添加一个无参的构造方法
<span style="font-size:18px;">public class Parent { Parent() { } //此处,父类也可以不用显式声明无参构造方法 }</span>
<span style="font-size:18px;">public class Child extends Parent { Child() { } }</span>
解决方法2:在子类的无参构造方法中显式调用父类中的有参构造方法
public class Parent { Parent(String name) { } }
public class Child extends Parent { Child() { super("name"); } }
最后再说一句,子类不会继承父类的构造方法,更没有子类重写父类的构造方法一说。子类和父类的名称不同,而方法重写需要方法名相同,显然,这一点就已经否决了子类可以重写父类的构造方法的说法
相关文章推荐
- Xcode7 网络请求报错:The resource could not be loaded because the App Transport Security policy requir
- 使用和了解库的异同
- html5常用新增标签
- MVC中的Views下面的视图放到Views文件夹外
- setAttribute的方法详解
- 多线程JAVA
- 比较运算符
- SignTool.exe(签名工具)
- java---工具类的设计
- ACdream 简单数论 专题
- NOIP2004普及组:合并果子
- string类字符串中的两个查找字符函数
- Linux C 文件夹遍历接口.
- cookie的创建及删除
- 插入排序法
- gradle android
- Ubuntu iptables 内网端口映射
- Head First PMP - 1 - PMP介绍
- 34-获取文件大小,文件夹大小,磁盘大小
- poj2857Expanding Rods【二分+计算几何】