【Java基础】2.多态

【Java基础】2.多态

2.1概述

多态英文单词为 Polymorphism

一般简称Multi

面向对象三大特征:封装性、继承性、多态性

extends继承或者implements实现,是多态性的前提

在这里插入图片描述

代码中若要体现多态性,简而言之就是:

​ 父类引用子类对象,即子类对象被当做父类看待

格式:

父类名称 对象名 = new 子类名称();

或者

接口名称 对象名 = new 实现类名称()

2.2访问成员变量

1.直接通过对象名称访问成员变量:

​ 看等号左边是谁,优先用谁,没有则向上找。

2.间接通过成员方法访问成员变量:

​ 看该方法属于谁(对象),优先用谁,没有则向上找。

2.3使用成员方法

在多态的代码中,成员方法的访问规则是:

​ 看new的是谁,就优先用谁,没有则向上找。

口诀:编译看左边,运行看右边

对比:

成员变量:编译看左边,运行还看左边;

成员方法:编译看左边,运行看右边;

2.4多态的用途

在这里插入图片描述

2.5对象向上转型

对象的向上转型:其实就是多态写法

格式:父类名称 对象名 = new 子类名称();

含义:右侧创建子类对象,把它当做父类看待和使用。

注意事项:

1.向上转型一定是安全的。从小范围转向了大范围。

2.弊端:一旦向上转型,就无法调用子类本来的特有内容。

2.6对象向下转型

对象的向下转型:其实是向上转型的逆操作

格式:子类对象 对象名 = (子类名称) 父类对象; 类似于“强制类型转换”

含义:将父类对象,【还原】成本来的子类对象

注意事项:

​ 1.必须保证对象本来创建时,就是猫,才能向下转型成为猫。

​ 2.如果对象创建的时候,本来不是猫,强行向下转型成为猫,就会报错。ClassCastException

2.7 instanceof关键字

如何知道一个父类引用的对象,本来是什么子类?

格式: 对象 instanceof 类名称

这将会得到一个boolean值结果,也就是判断前面的对象能不能当做后面类型的实例

2.8接口多态的综合案例

2.8.1笔记本电脑

笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。

定义USB接口,具备最基本的开起功能和关闭功能。鼠标和键盘要想再电脑上使用,那么鼠标和键盘也必须遵守USB规范,实现USB接口,否则鼠标和键盘生产出来也没法使用。

2.8.2案例分析

进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘

  • USB接口:包含设备功能、关闭设备功能
  • 笔记本类:包含开机功能、关机功能、使用USB设备功能
  • 鼠标类:要实现USB接口,并具备点击的方法
  • 键盘类:要实现USB接口,具备敲击的方法

2.8.3案例实现

在这里插入图片描述

代码实现:

``

package cn.itcast.day07.demo04;

public class DemoMain {
    public static void main(String[] args) {
        //准备一个笔记本电脑
        Computer computer = new Computer();
        //开机
        computer.powerOn();
        //准备一个鼠标,并拿起其USB
        USB usbMouse  = new Mouse();
        //将鼠标连接上电脑
        computer.useDevice(usbMouse);
        //使用鼠标
        ((Mouse) usbMouse).click();//向下转换
        ((Mouse) usbMouse).move();//向下转换

        //准备一个键盘,并拿起其USB
        USB usbKeyboard = new Keyboard();
        //将键盘连接上电脑
        computer.useDevice(usbKeyboard);
        //使用键盘
        ((Keyboard) usbKeyboard).point();//向下转换

        //拔出鼠标和键盘
        computer.closeDevice(usbMouse);
        computer.closeDevice(usbKeyboard);
        //关机
        computer.powerOff();

        //
    }
}
出鼠标和键盘
        computer.closeDevice(usbMouse);
        computer.closeDevice(usbKeyboard);
        //关机
        computer.powerOff();

        //
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值