一、多态
1.1 相关知识
软件设计六大原则:
单一职责原则:一个类或一个方法只做一个事情,只拥抱一种变化
里式替换原则:能使用父类的地方就一定可以使用子类
依赖倒置原则:底层应该依赖高层,高层不应该依赖底层,实现应该依赖抽象
接口隔离原则:应该依赖最小接口
迪米特法则:只有和关系的类进行通信
开闭原则:修改关闭,拓展开放
1.2是什么
多态:多形态
java中提供了两种多态机制
- 编译时多态:是静态的,只要是指方法重载,根据传入不同的参数做出不同的相应
- 运行时多态:是动态的,只要是指动态绑定来实现,是我们现在的重点
多态:父类引用指向子类对象
父类引用:就是父类类型创建的引用变量
指向:就是可以找到谁
子类对象:子类的实例化对象
通过父类创建的引用类型变量,保存了子类对象的内存地址
父类 变量=new 子类();
1.3怎么用
1.4 应用场景和优点
- 如果一个功能只对应一种实现,就不使用实现,就不使用多态
- 如果一个功能可能有多种实现,一定是多态
低耦合,降低需求变动带来的代码变动风险
// 用户类
class User {
// public void test(Cat cat) {
// cat.eat();
// }
// public void test(Dog dog) {
// dog.eat();
// }
public void test(Animal animal) {
animal.eat();
}
}
class Animal {
public void eat() {
}
}
// 猫
class Cat extends Animal {
public void eat() {
System.out.println("猫吃鱼");
}
}
// 狗类
class Dog extends Animal {
public void eat() {
System.out.println("狗吃肉");
}
}
class Pig extends Animal {
public void eat() {
System.out.println("猪拱白菜");
}
}
1.5 缺点
多态缺点:丢失子类特有的属性,(父类没有子类有,就是特有)
1.6 多态进行属性调用
- 1 父子类都没有 : 报错
- 2 父子类都有 : 成员方法执行子类,其他执行父类
- 3 父类没有子类有 : 报错,丢失子类特有属性
- 4 父类有子类没有 : 父类
1.7 Instanceof
多态又叫向上转型
强制转换回子类类型,又叫向下转型
必须先发生向上转型,才能发生向下转型
stanceof
多态又叫向上转型
强制转换回子类类型,又叫向下转型
必须先发生向上转型,才能发生向下转型
[外链图片转存中…(img-VCeYQD8N-1722422273344)]