继承:继承是通过关键字extends体现的。
继承的格式
class 类名1 extends 类名2{
}
继承要注意的事项
1. 千万不要为了减少重复代码而去继承,只有真正存在着继承关系的时候才去继承。
2. 父类私有的成员不能被继承。
3. 父类的构造函数不能被继承。
4. 创建子类对象时默认会先调用父类无参的构造函数。
super关键字
class Father{
int x = 10;
}
class Son extends Father{
int x = 20;
public void print(){
System.out.println("x = " +super.x);
}
}
class Demo {
public static void main(String[] args) {
Son s = new Son();
s.print();
}
}
输出结果:x = 10
super关键字代表了父类空间的引用
super关键字的作用
1. 子父类存在同名成员(属性或方法),在子类中默认访问子类的成员,通过super关键字可以访问父类的成员。
2. 创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法。
super关键字调用父类构造方法的注意事项
1. 如果子类的构造方法上没有调用父类的构造方法,那么jvm会在子类的构造方法上面加上super()语句。
2. super关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句。
3. super与this关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要第一个语句。
知识点:
super关键字与this关键字的区别
一. 代表的事物不一致。
1. super关键字代表的是父类空间的引用。
2. this关键字代表的是所属函数的调用者对象。
二. 使用前提不一致。
1. super关键字必须要有继承关系才能使用。
2. this关键字不需要存在继承关系也可使用。
三. 调用构造函数的区别:
1. super关键字是调用父类的构造函数。
2. this关键字是调用本类的构造函数。