JavaSE基础之多态

一、多态

1.1 相关知识

软件设计六大原则:

单一职责原则:一个类或一个方法只做一个事情,只拥抱一种变化

里式替换原则:能使用父类的地方就一定可以使用子类

依赖倒置原则:底层应该依赖高层,高层不应该依赖底层,实现应该依赖抽象

接口隔离原则:应该依赖最小接口

迪米特法则:只有和关系的类进行通信

开闭原则:修改关闭,拓展开放

1.2是什么

多态:多形态

java中提供了两种多态机制

  • 编译时多态:是静态的,只要是指方法重载,根据传入不同的参数做出不同的相应
  • 运行时多态:是动态的,只要是指动态绑定来实现,是我们现在的重点

多态:父类引用指向子类对象

父类引用:就是父类类型创建的引用变量

指向:就是可以找到谁

子类对象:子类的实例化对象

通过父类创建的引用类型变量,保存了子类对象的内存地址

父类 变量=new 子类();

1.3怎么用

image-20240731183123106

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

多态又叫向上转型

强制转换回子类类型,又叫向下转型

必须先发生向上转型,才能发生向下转型

image-20240731183636922

stanceof

多态又叫向上转型

强制转换回子类类型,又叫向下转型

必须先发生向上转型,才能发生向下转型

[外链图片转存中…(img-VCeYQD8N-1722422273344)]

image-20240731183649064

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值