目录
前言
要说继承关系下构造方法的访问特点,首先要知道继承的意义,Java为社么要继承?构造方法怎么访问?通过什么方式继承?关键字是什么?
提示:以下是本篇文章正文内容,下面案例可供参考
一、继承是什么?设置继承关系有什么好处?
继承是面向对象三大特征之一。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。子类可以直接调用父类中非private修饰的变量或者方法。
好处:共性抽取(多个类中相同的代码),提高代码的复用性
1、关键字 (extends)
public class Test01 extends Person{
//class 类关键字,extends 继承关键字,Person 要继承的父类
}
2.构造方法
设置构造方法
public class Student {
//创建Student类,设置无参的构造方法
public Student() {
// TODO Auto-generated constructor stub
}
}
3.子类调用父类的构造方法
关键字:super
提到super,在这里我简单的介绍以下super和this关键字的区别,这是我在学习中,老师为我们总结的二者的区别:
super | this |
---|---|
super可以调用父类中的成员变量 | this可以调用本类中的成员变量 |
super可以调用父类中的成员方法 | this可以调用本类中的成员方法 |
super()调用父类的无参构造方法 | this()调用本类的无参构造方法 |
super()和this()不能同时出现,因为它们需要被写在构造方法的第一行 |
总结一下:
继承关系下构造方法的访问特点:
* a:在子类的构造方法中,如果没有显示的写super(参数),则默认赠送一个super();
* b:如果显示的写了一个super(参数),则不再赠送
* c:super(参数),必须是第一个语句
*
* 在创建子类对象的时候,一定会调用父类的某个构造方法。
需要注意的是this()不可以递归调用有参和无参构造方法,另外我们可以看到如果使用快捷方法创建父类构造时,工具会自动生成一个super(),实质是在引用顶级父类的Object父类对象
public class Fu {
public int a = 10;
public void method() {
System.out.println("Fu.method()");
}
public Fu() {
System.out.println("Fu.Fu()");
}
public Fu(int a) {
System.out.println("Fu.Fu(int a)");
}
}
public class Zi extends Fu{
public int a = 20;
public void method() {
System.out.println("Zi.method()");
}
//构造方法
public Zi() {
//super();//调用父类的无参数的构造方法
super(10);
System.out.println("Zi.zi()");
}
}
public class Test01 { public static void main(String[] args) { Zi zi = new Zi(); System.out.println(zi.a); zi.method(); new Zi(); } }
运行结果:
Fu.Fu(int a)
Zi.zi()
20
Zi.method()
Fu.Fu(int a)
Zi.zi()
总结
以上就是我对继承关系下构造方法访问的特点,Java继承是单继承多级继承,所以只要熟练的掌握了继承的访问特点,知道变量或者方法的调用又来,从哪来,要被谁调用,就会很少迷路,继承也为多态的实现奠定了基础。