八、继承多态、继承多态八、继承多态八、继承多八、继承多态
继承的格式:
public class 子类名extends 父类名 {}
继承的好处:
A:提高了代码的复用性
B:提高了代码的维护性
C:让类与类之间产生了关系,是多态的前提
继承的弊端:
让类与类之间产生了关系,也就让类的耦合性增强了。
开发原则:高内聚,低耦合。
内聚:就是自己完成某件事情的能力
耦合:类与类的关系
特点:单继承
二、super
super的用法和this很像
this代表本类对象的引用
super代表父类存储空间的标识(可以理解为父类对象引用)
用法(this和super均可如下使用)
访问成员变量
this.成员变量 super.成员变量
访问构造方法
this(…)super(…)
访问成员方法
this.成员方法() super.成员方法()
三、构造方法
1、不能被继承
2、先调用父类的无参构造,在调用子类的无参构造
四、方法重写override
定义:子类中出现了和父类中一摸一样的方法声明
方法重写的注意事项:
父类中私有方法不能被重写
子类重写父类方法时,访问权限不能更低
子类重写父类方法时,建议访问权限一摸一样
五、权限
private->默认(不写)-->public
六、多态
Person p=new Student();
p.infor();
System.out.println(p.name);
1、前提:继承
2、成员变量与成员方法访问特点
成员变量访问特点:
编译看左边,运行看左边
p.name得到的是父类成员变量的值
成员方法访问特点:
编译看左边,运行在右边
p.infor(),编译时会先看左父类有没有此方法,没有会报错,如果子类有此方法的重写则调用子类的重写方法。
*因为方法有重写,变量没有
3、多态的好处与弊端
多态的好处:
提高了程序的扩展性
多态的弊端:
不能访问子类特有功能
访问子类的特有功能:
通过多态中的转型
4、多态中的转型问题
向上转型:
从子到父
父类引用指向子类对象
向下转型:
从父到子
父类引用转为子类对象
ClassCastException:类型转换异常
Dog dog=new Dog();
Cat cat=new Cat();
Animal al=new Animal();
Animal a=new Dog();
dog=(Dog)al;//类型转换异常
dog=(Dog)a;//先向上转型才能向下转型
UserDuoTai use=new UserDuoTai();
use.userAnimal(dog);
use.userAnimal(cat);