Java--多态小案例

本文详细解析了如何通过定义USB接口,使笔记本电脑能够识别并使用USB鼠标和键盘。通过实现USB接口的鼠标和键盘类,以及笔记本类中使用USB设备的方法,展示了设备与电脑之间的交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔记本电脑链接鼠标和键盘

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

1. 案例分析

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

2. 案例实现

定义USB接口:
		interface USB {
		    void open();// 开启功能
		    void close();// 关闭功能
		}
		
定义鼠标类:
		class Mouse implements USB {
		    public void open() {
		        System.out.println("鼠标开启,红灯闪一闪");
		    }
		    public void close() {
		        System.out.println("鼠标关闭,红灯熄灭");
		    }
		    public void click(){
		        System.out.println("鼠标单击");
		    }
		}
		
定义键盘类:
		class KeyBoard implements USB {
		    public void open() {
		        System.out.println("键盘开启,绿灯闪一闪");
		    }
		    public void close() {
		        System.out.println("键盘关闭,绿灯熄灭");
		    }
		    public void type(){
		        System.out.println("键盘打字");
		    }
		}
		
定义笔记本类:
		class Laptop {
		    // 笔记本开启运行功能
		    public void run() {
		        System.out.println("笔记本运行");
		    }
		    // 笔记本使用usb设备,这时当笔记本对象调用这个功能时,必须给其传递一个符合USB规则的USB设备
		    public void useUSB(USB usb) {
		        // 判断是否有USB设备
		        usb.open();
		        // 类型转换,调用特有方法
		        if (usb instanceof Mouse) {
		          Mouse m = (Mouse)usb;
		            m.click();
		        } else if (usb instanceof KeyBoard) {
		          KeyBoard kb = (KeyBoard)usb;
		          kb.type();
		        }
		        usb.close();
		    }
		    public void shutDown() {
		        System.out.println("笔记本关闭");
		    }
		}
		
测试类,代码如下:
		public class Test {
		    public static void main(String[] args) {
		        // 创建笔记本实体对象
		        Laptop lt = new Laptop();
		        // 笔记本开启
		        lt.run();
		        // 创建鼠标实体对象
		        Usb u = new Mouse();
		        // 笔记本使用鼠标
		        lt.useUSB(u);
		        // 创建键盘实体对象
		        KeyBoard kb = new KeyBoard();
		        // 笔记本使用键盘
		        lt.useUSB(kb);
		        // 笔记本关闭
		        lt.shutDown();
		    }
		}

总结

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

end

谢谢您的阅读 !

### Java 面向对象编程中的封装、继承和多态 #### 封装的概念及应用 封装是一种信息隐藏技术,通过这种方式,对象的状态被保护起来不被外部直接访问。在Java中,可以通过设置类成员变量的访问权限来实现这一点。通常情况下,会将字段设为私有(private),并通过公有的(getter/setter)方法提供对外部访问这些字段的方式。 ```java class Person { private String name; public void setName(String newName){ this.name = newName; } public String getName(){ return this.name; } } ``` 这种做法不仅提高了数据的安全性和一致性,还允许开发者控制如何以及何时修改内部状态[^1]。 #### 继承的概念及应用 继承是面向对象编程的一个核心特性之一,在Java里它使得一个新创建出来的子类能够自动获得另一个已存在的父类属性与行为(即方法). 这样做的好处是可以减少重复代码并促进软件组件之间的可重用性. 当定义一个新的类时,如果这个新的类完全或者部分实现了现有某个其他类的功能,则可以让该新类从那个旧类那里“继承”。这表示新类将会拥有原类的所有非私有成员函数及其数据成员,并且还可以添加额外的新特征或改变已有特性的具体实现方式: ```java // 定义基类 Animal class Animal{ protected String sound=""; public void makeSound() { System.out.println(sound); } } // 创建 Dog 类继承自 Animal 并覆写了 makeSound 方法 class Dog extends Animal{ @Override public void makeSound(){sound ="Woof!";super.makeSound();} } ``` 上述例子展示了`Dog`类是如何基于`Animal`的基础上构建而成的同时又保持了自己的独特之处——发出不同的声音. #### 多态的概念及应用 多态指的是同一个操作作用于不同类型的对象上会产生不同类型的行为的现象。对于Java而言,主要体现在两个方面: - **编译期多态 (静态/早期绑定)** : 由方法重载(Method Overloading)所支持. - **运行时期多态 (动态/晚期绑定)** :这是指当调用了某个已被子类重新定义过的超类版本的方法时,实际执行的是最具体的派生类所提供的那一份实现而不是声明处指定的那个类型的方法体; 实现此机制的关键在于使用虚表(Virtual Table). 下面的例子说明了后者的工作原理: ```java class Shape { // 声明了一个名为 draw 的抽象方法 public abstract void draw(); } class Circle extends Shape { @Override public void draw() { System.out.println("Drawing a circle..."); } } class Rectangle extends Shape { @Override public void draw() { System.out.println("Drawing a rectangle..."); } } public class Main { public static void main(String[] args) { Shape s1=new Circle(); Shape s2= new Rectangle(); s1.draw(); // 输出 "Drawing a circle..." s2.draw(); // 输出 "Drawing a rectangle..." } } ``` 在这个案例里面,尽管`s1` 和 `s2` 变量都被声明为了`Shape` 类型,但在它们各自调用各自的`draw()` 函数的时候却展现出了不一样的效果 —— 即使是在相同的语法结构下也能表现出差异化的逻辑处理过程,这就是所谓的“多态”。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值