继承:
1特点:
- 继承一个类的成员变量和成员方法(注意private
- 子类不能继承父类的私有成员
- 子类不能继承父类的构造方法,但是可以通过super去访问
- 只支持单继承
- 可以多层(重)继承(继承体系)
2:子类与父类关系:
子类对象调用成员变量的规则:
1:先去子类局部位置查找成员变量,有就调用
2:子类局部位置没有,就去上一级成员变量中查找,有就调用
3:子类没有,就去父类查找成员变量,有就调用
子类对象调用构造方法的规则:
1)子类的构造方法默认会去访问父类的无参构造方法—父类数据的初始化
2)父类没有无参构造,子类通过super去明确调用父类带参构造
3)子类通过this调用本身的其他构造,但是一定会有一个去访问了父类的构造,让父类初始化
public class Test extends TestFather{
public Test() {
super();//访问父无参
System.out.println("son无参");
}
public Test(int a ) {
this();//调用Test()构造方法
System.out.println("son有参");
}
public Test(String a ) {
super(12);//调用TestFather(int a)构造方法
System.out.println("son有参");
}
public static void main(String[] args) {
Test test=new Test();
}
}
class TestFather {
// 构造方法
public TestFather() {
super();
System.out.println("father无参");
}
public TestFather(int a) {
super();
System.out.println("father 有参");
}
}
输出:
father无参
son无参
子类对象调用成员方法的规则
1:如果子类有对应成员方法,直接调用
2:子类中没有对应成员方法,去父类中找,有就使用