Java三大特性之多态

1.多态(java三大特性之一)

概述:同一个对象,具有多种形态
例如:Student ----> 人
Student ----> 员工

2.多态的前置条件

  1. 继承或者实现【二选一】
  2. 方法的重写【意义体现:不重写,无意义】
  3. 父类引用指向子类对象【格式体现】

3.代码演示

//父类
public class Animal {
public void eat() {
System.out.println(“动物吃”);
}
}

public class Dog extends Animal{
@Override
public void eat() {
System.out.println(“狗吃骨头!”);
}
//Animal ----> Cat
//Animal ----> Dog
}

public class Cat extends Animal{

@Override
public void eat() {
	System.out.println("猫吃鱼!");
}

}

public class Test {
public static void main(String[] args) {
//多态:父类的引用 = 子类对象
Animal a = new Cat();
a.eat();
Animal d = new Dog();
d.eat();
}
//练习:父类Fruit 子类:apple an apple a day keeps doctor away!
//子类:西瓜
//重写的方法:show(),父类:水果超甜 子类重写–>苹果超甜 ---->西瓜超甜
}

4.多态的好处

实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,
进行方法的调用,更能体现出多态的扩展性与便利。
public class Animal {
public void eat() {
System.out.println(“吃东西”);
}
}
------------------------------------------
public class Cat extends Animal{
@Override
public void eat() {
System.out.println(“吃鱼”);
}
}
------------------------------------------
public class Dog extends Animal{
@Override
public void eat() {
System.out.println(“吃骨头”);
}
}
------------------------------------------
public class Pig extends Animal{
@Override
public void eat() {
System.out.println(“吃白菜”);
}
}
------------------------------------------
public static void main(String[] args) {
//多态的形式创建对象
animalEat(new Dog());
animalEat(new Cat());
animalEat(new Pig());
}
public static void animalEat(Animal a) {
a.eat();
}

5.多态的转型

5.1向上转型:Animal a = new Cat();
5.2向下转型: 有些时候Cat或者Dog里面有一些自己特有的方法
这个时候就需要进行向下转型
Animal c = new Cat();
Cat cat = (Cat)c;
cat.show();

	Animal d = new Dog();
	Dog dog = (Dog)d;
	dog.show();

5.3值得注意的是:思考,猫—>狗 必然不可以
Animal c = new Cat();
Dog dog = (Dog)c;
dog.show();//必然报错ClassCastException
5.4解决方案,先判断类型再强转
Animal c = new Cat();
if(c instanceof Cat) {
Cat cat = (Cat)c;
cat.show();
}
if(c instanceof Dog) {
Dog dog = (Dog)c;
}
练习1(必做)
//练习:父类Fruit 子类:apple an apple a day keeps doctor away!
//子类:西瓜
//重写的方法:show(),父类:水果超甜 子类重写–>苹果超甜 ---->西瓜超甜
练习2(必做)
2.1笔记本电脑(laptop)通常具备使用USB设备的功能。
在生产时,笔记本都预留了可以插入USB设备的USB接口,
请定义USB接口,具备最基本的开启open()功能和close()关闭功能。
2.2分析鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,实现USB接口。
分析:
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
USB 接口,包含开启功能、关闭功能
笔记本类,包含1.运行功能、2.关机功能、3.使用 USB设备功能
鼠标类,要实现 USB接口,并具备点击的方法
键盘类,要实现 USB接口,具备敲击的方法

6.接口的多态

public interface Door {
public abstract void open();
public abstract void close();
}

public class DoorImpl implements Door{
@Override
public void open() {
System.out.println(“开门”);

}
@Override
public void close() {
	System.out.println("关门");
	
}

}

public class DoorImpl2 implements Door{
@Override
public void open() {
System.out.println(“芝麻开门”);

}
@Override
public void close() {
	System.out.println("芝麻官们");
	
}

}

public class Test {
//01.要有继承或者实现的关系
//02.要重写父类的方法
//03.父类引用指向子类对象
public static void main(String[] args) {
Door d = new DoorImpl();//接口的多态
d.open();
d.close();
Door d2 = new DoorImpl2();
d2.open();
d2.close();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西瓜gh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值