1. 语法格式
class 子类名 extends 父类名 {
成员;
}
2. 继承关系
2.1 在java中,类和类之间的继承只允许单继承,不允许多继承,即每个子类只能extends一个父类,只有一个直接父类
2.2 在java中,虽然不能多继承,但可以多重继承,即class A extends B, 同时,class B extends C,此时,B类和C类均为A类 的父类
2.3 在java中,除了Object类外,每个类都有一个直接的父类(默认为Object)
2.4 Object类是java语言的根类
注:抽象类的根类也是Object,但Object类不是Interface的根类
3. 继承的作用
3.1 解决了代码的重复问题,使代码简洁
3.2 体现了一个体系
4. 子类继承父类的哪些成员——子类具备父类哪些成员的访问权限
4.1 若父类的成员用public修饰,则可以通过子类访问
4.2 若父类的成员用protected修饰,可以通过子类访问(即使两个类不在同一个包内)
4.3 若父类的成员用的是缺省修饰符,子类若和父类在同一个包内,则可以通过子类访问,否则不能
4.4 若父类的成员用private修饰,则不能通过子类访问,private只能在本类中进行访问
注意: 子类继承的仅仅是对父类成员的访问权限,并不代表着子类本身也具备这样的成员。只是我们在实例化子类时,会首先创建并初始化一个父类实例对象,子类继承父类的成员,仅仅代表子类具有访问父类成员的权限。
举个简单的例子说明:
public class User {
protected Integer age;
}
public class RegisterUser extends User{
@Test
public void sayHello() {
super.age = 10;
System.out.println(super.age);
System.out.println(this.age);
this.age = 20;
System.out.println(super.age);
System.out.println(this.age);
}
}
输出结果为:
10
10
20
20
5. 方法覆盖(方法复写)
5.1 方法复写原则(一同,两小,一大)
一同: 方法签名相同(即方法名+参数列表相同)
两小: 子类方法的返回值类型和需要与父类方法的返回值类型相同,或是其子类;子类方法中声明抛出的异常类型需要与父类方法声明抛出的异常类型相同或是其子类
一大: 子类方法的访问权限必须与父类方法的访问权限相同,或更大
5.2 方法重载和方法覆盖
6. super关键字
6.1 表示当前对象的父类对象
6.2 作用
6.2.1 在子类方法中,调用父类被复写的方法,必须用super
6.2.2 在子类构造器中,调用父类的构造器,必须使用super
6.2.3 可以使用super解决子类隐藏了父类的字段情况,一般少用