继承的概述
面向对象的三大特性:封装,继承,多态
继承是多态的前提
继承住要解决内容:共性抽取
继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父类中的非私有的属性和行为。
特点:
1 子类可以拥有父类的“内容”
2 子类还可以拥有自己专有的内容
继承的格式
在继承的关系中,子类可以被当做父类看待
定义父类的格式:
public class 父类名称
{
//...
}
定义子类的格式
public class 子类名称 extends 父类名称
{
//....
}
继承中成员变量的访问特点
子类可以继承父类,父类当中不能有子类成员变量
在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方法
直接通过子类对象访问成员变量;
等号左边是谁,就优先用谁,没有再向上找
间接通过成员方法访问成员变量:
该方法属于谁,就优先用谁,没有就向上找
区分子类方法重名的三种变量
局部变量 直接写成员变量名
子类的成员变量 this.成员变量名
父类的成员变量 super.成员变量名
继承中成员方法的访问特点
public class fu
{
public void methodfu()
{
System.out.println("父类方法");
}
public void method()
{
System.out.println("父类重名方法");
}
}
public class zi extends fu
{
public void methodzi()
{
System.out.println("子类方法");
}
public void method()
{
System.out.println("子类重名方法");
}
}
}
public class Demo
{
public static void main(String[] args)
{
zi.method();
}
}
创建的对象是谁,就优先用谁,如果没有则向上找
[注意]无论是成员方法还是成员变量,如果没有都是向上找父类,绝不会向下找子类
继承中方法的重写
重写
概念:在继承关系中,方法的名称一样,参数列表也一样,也叫覆盖,覆写
特点:创建的是子类对象则优先用子类方法
注意事项:
1 必须保证方法名称相同,参数列表也相同
2 @Override注解,可以起到一个安全监测的作用,检测重写是否正确
3 子类方法的返回值必须小于等于父类方法的返回值范围
4 子类方法的权限必须大于等于父类方法的权限修饰符
public>protected>(default)>private
(default)不是关键字default,而是什么都不写
应用场景:
继承中构造方法的访问特点
1 子类构造方法当中有一个默认隐含的“super()“调用,所以一定是先调用的父类构造,后执行的子类构造
2 可以通过一个super关键字来在子类中调用父类的重载构造
3 super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多个super构造