适用于同一个操作行为,针对不同的参数返回不同的实例对象,完成不同的操作结果
- 编译时多态
- 设计时多态,方法重载
- 运行时多态(常用)
- 程序运行时多态,决定调用哪个方法
- 多态的必要条件
- 满足继承关系
- 父类引用指向子类对象
- 向上转型
- 向上转型又叫隐士转型或自动转型
- 父类引用指向子类实例,可以调用子类重写父类的方法以及父类派生的方法,无法调用子类特有的方法
- 小类转大类
Animal two = new Cat();//2
Animal three = new Dog();//3
- 向下转型
- 向下转型,又叫强制类型转换
- 子类引用指向父类对象,此处必须进行强转,可以调用子类特有的方法
- 必须满足转换条件,instanceof 返回true/false
if (two instanceof Cat) {//two实例 具有Cat类特征
Cat temp = (Cat) two;
temp.eat();
temp.run();
}
- 抽象类
- 应用场景:某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法
public abstract class Animal {}
- 特点:
- 避免是子类设计随意性
- 无意义的父类实例
- 抽象类:不允许被实例化
- 抽象方法
父类
//抽象方法:不允许包含方法体;子类中必须要重写父类方法
public abstract void eat() ;
子类
//方法:吃东西(重写父类方法)
@Override
public void eat() {
System.out.println("猫吃鱼");
}
static、final、private不能和abstract搭配使用
static 不允许在子类中重写
final 不允许在子类中重写
private 只允许在当前作用范围内被访问
网友评论