概述:继承就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。
继承描述的是事物之间的所属关系,这种关系是: is-a 的关系
好处:提供代码的复用性;
类与类之间产生关系,是多态的前提
继承的格式:使用extends关键字
public class 父类{
}
public class 子类 extends 父类{
}
public class ExtendsTest {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.name="张三";//为属性赋值
teacher.work();//调用父类的方法
teacher.teach();//调用本类的方法
}
}
class Employee{
//定义属性
String name;
//定义方法
public void work(){
System.out.println("努力工作!");
}
}
class Teacher extends Employee{
//定义一个教学的方法
public void teach(){
System.out.println("教语文!");
}
}
继承的特点:
1. Java只支持单继承,不支持多继承。
2. 子类和父类是一种相对的概念。
当子类成员变量与父类成员变量同名时,调用父类的非私有成员变量应使用super关键字。
public class ExtendsTest01 {
public static void main(String[] args) {
Zi zi = new Zi();
zi.print();
}
}
class Fu{
//父类中菲私有的成员变量
int num = 10;
}
class Zi extends Fu{
int num = 9;
public void print(){
System.out.println("调用父类非私有的成员变量:"+super.num);//10
System.out.println("调用子类成员变量:"+this.num);//9 ,this可省略
}
}
如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。
方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效 果,也称为重写或者复写。声明不变,重新实现。
1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。