java学习总结五:继承中子父类的构造函数
来源:互联网 发布:电脑桌面日历软件 编辑:程序博客网 时间:2024/06/01 18:51
子类中的所有的构造函数的第一句都隐式地含有父类中的空参构造函数 super()
当父类中有带参数的构造函数时,编译往往不会通过,这是因为父类中的默认空参构造函数不存在了,子类依旧隐式地含有super(),但却调用不到父类中的空参构造函数。
解决方法:
在子类中定义super(参数)来访问父类中带参数的构造函数,但是必须写在第一行,否则不能编译。
代码示例:
class Fu{ int num ; int age; Fu(){ System.out.println("Fu run"); } Fu(int a){ age =a; num = 4; System.out.println("num="+num+",age="+age); } }class Zi extends Fu{ Zi(int a){ //super(); //这里本身是隐式含有super(),调用父类中的构造函数,如果父类中没有空参构造函数,则会编译不通过 super(3); System.out.println(a); }}class ExtendDemo1{ public static void main(String[] args) { Zi z = new Zi(3); }}
当构造函数有this的时候。super函数就不存在了,因为这两个函数都必须在第一行
这两个函数必须在第一行,是因为初始化要先进行。
父类中构造函数在子类初始化的应用:
子类调用父类中的初始化函数来进行初始化,只需要在父类中初始化一次就可以
class Person{ private String name; private int age; Person(String name,int age){ this.name = name; this.age = age; } public void setName(String name){ this.name =name; } public String getName(){ return name; }}class Student extends Person{ Student(String name,int age){ super(name,age); //调用父类的初始化函数进行初始化 } }class worker extends Person{ private double pay; Worker(String name,int age,double pay){ super(name,age); this.pay = pay;}class ExtendsDemo2{ public static void main(String[] args) { Student a = new Student("lisi",20); System.out.println(a.getName()); }}
1 0
- java学习总结五:继承中子父类的构造函数
- 学习笔记——继承中子父类变量,函数,构造函数的特点
- 继承过程中子父类的构造函数特点
- 继承中子父类构造函数的问题
- 构造函数中子父类之间的调用问题
- java类构造函数的继承
- Java 类的继承与构造函数
- JAVA 子类不能继承父类的构造函数
- Java构造函数的继承-Java 学习笔记 (14)
- Java构造函数的继承
- Java 构造函数的“继承”
- java构造函数的继承
- java构造函数的学习总结
- 序列化中子父类构造函数问题
- java知识点总结之五构造函数
- java 自我知识总结(十一)构造函数 继承 及类的加载顺序
- JavaScript学习笔记(三十五) 经典继承五-临时构造函数
- java 继承 构造函数
- 数据库完整性
- 继承和多态
- 同学最擅长的开辟数组空间
- Android中获取手机中的联系人信息
- 【DSP开发】【VS开发】YUV与RGB格式转换
- java学习总结五:继承中子父类的构造函数
- AS Bug:Error:failed to find Build Tools revision 24.0.0 rc1
- JavaScript鼠标拖动
- 反射
- 开发App常见的九大错误
- 【Unity3D插件】NGUI基础学习笔记
- leetcode 300. Longest Increasing Subsequence
- SelectObject 函数详解
- Android单元测试