6.继承
它是多态的前提,如果没有继承就没有多态
父类:也叫基类或超类
子类: 也叫派生类
使用关键字extends
子类可以继承相应父类中中的属性
(1)格式
父类(普通类)
public class 父类名称{
}
子类
public class 子类格式 extends 父类名称{
}
(2)特点
1、子类拥有父类的内容
2、子类拥有自己专有的内容(父类只能用自己的东西,不能使用子类的)
(3)访问成员变量
直接通过子类访问成员变量:
等号左边是谁优先用谁的,没有就向上找
间接通过成员方法访问成员变量:
该方法属于谁,就先使用谁的,没有就向上找
如果想要使用本类的成员变量:
使用this.成员变量
如果想要使用父类的成员变量:
使用super.成员变量
在父子类的继承关系中,创建子类对象访问成员方法的规则:
创建的对象是谁,就优先用谁,如果没有就向上找
(4)重写方法
继承父类的方法
<1>概念
重写方法(父子类中,两个类)
在继承关系中,方法名一样,参数列表也一样的方法
@Override 注解,检测该方法是不是重写方法
重载方法(同类中)
方法名相同,参数列表不同
<2>注意事项:
1、方法重写必须要保证的是父子类之间方法的名称相同,参数列表也相同
2、子类方法的返回值必须 小于等于 父类的返回值范围
3、子类的访问权限必须 大于等于 父类的访问权限修饰符
<3>继承父类的方法
快捷键Alt+O
父类
public void call(){
System.out.println("来电提醒");
System.out.println("打电话");
System.out.println("接电话");
}
子类
public void call(){
super.call();//继承父类里的方法
}
子类可以根据自己的需求进行差异化定制
既沿袭了父类的功能名称,又根据子类的需求重新实现了父类方法,从而进行了功能的拓展
(5)super()
调用父类的构造方法
super();调用父类的构造方法,必须在子类构造的第一行调用(一个方法内只能调用一次)
子类无法继承父类的构造方法
构造方法只能被调用,不能被继承
会使用super()调用
super:
表示父类的存储空间标识,可以理解为父类的引用
this:
标识当前对象的引用
java中的继承是单一继承的
java中任何类都有父类
Object类是所有类的父类
(6)抽象类
抽象方法:
就是在一般方法的基础上加上abstract关键字,然后去掉大括号,加个分号
抽象类:
抽象方法所在的类,就是在class前面加上abstract关键字
抽象类代码
public abstract class Animals {
//abstract抽象方法
public abstract void eat();
}
注意:
1、抽象类不能new对象
2、使用抽象类必须要有一个子类继承它
3、子类必须要重写抽象方法
重写抽象方法:只要去掉abstract关键字,然后加上关键字
父类抽象方法
public abstract void eat();
子类重写抽象方法
public void eat(){
System.out.println("猫吃老鼠");
}
4、需要创建子类对象使用
抽象类可以继承抽象类
可以不重写抽象方法
抽象类里不一定有抽象方法
抽象方法一定要在抽象类里