java 多态应用_Java 多态的简单应用

电脑判断USB设备

dbf0642b96d4609d74ded4673a812965.png

USB接口

/*

创建usb接口

接口类:1.接口本身就是个抽象类的集合,所以里面的方法都是抽象方法即使你省略了

关键字abstract,Java默认会给你加上abstract

2.接口中有默认方法和默认静态方法

默认方法:使用 default 修饰,不可省略,供子类调用或者子类重写。

静态方法:使用 static 修饰,供接口直接调用。

3.接口中有私有方法和私有静态方法

私有方法:private 返回值类型 方法名称(){方法体}

私有方法只能在本类中调用

静态方法:private static void 方法名称(){方法体}

private static只能被本类中的方法(可以是非静态的)调用

4.接口的成员变量其实是常量,格式:[public] [static] [final] 数据类型 常量名称 = 数据值;

注意:

常量必须进行赋值,而且一旦赋值不能改变。

常量名称完全大写,用下划线进行分隔。

5.一个接口能继承另一个或者多个接口,

*/

public interface Usb {

//打开接口方法省略了public abstract

void open();

//关闭接口方法

public abstract void close();

}

电脑类

/*

创建电脑类 ,因为电脑不是usb设备,它提供了usb接口

*/

public class Computer {

public void powerOn() {

System.out.println("电脑开机");

}

public void powerOff() {

System.out.println("电脑关机");

}

//创建方法

public void userUsbDevice(Usb usb) {

usb.open();//电脑开机

//判断usb接口类型

if (usb instanceof Mouse) {

//接口类型是Mouse鼠标,向下转型

//格式 子类类型 变量名 = (子类类型) 父类变量名;

Mouse mouse = (Mouse) usb;

//调用子类方法

mouse.addMouse();

} else if (usb instanceof KeyWord) {

//接口类型是KeyWord鼠标,向下转型

//格式 子类类型 变量名 = (子类类型) 父类变量名;

KeyWord keyWord = (KeyWord) usb;

keyWord.useKeyWrod();

}

usb.close();

}

}

设备类1

/*

键盘是usb设备,创建键盘对象继承usb接口

*/

public class Mouse implements Usb {

@Override

public void open() {

System.out.println("打开鼠标");

}

public void addMouse() {

System.out.println("点击鼠标");

}

@Override

public void close() {

System.out.println("关闭鼠标");

}

}

设备类2

/*

键盘是usb设备,创建键盘对象继承usb接口

*/

public class KeyWord implements Usb {

@Override

public void open() {

System.out.println("打开键盘");

}

public void useKeyWrod() {

System.out.println("键盘输入");

}

@Override

public void close() {

System.out.println("关闭键盘");

}

}

设备类n

参考设备类1和2,并增加内容在判断接口类方法中

测试类

/*

创建测试类

知识点 ;1.多态转型:意义就是父类能访问到子类的方法,子类能访问到父类的方法

多态向上转型 多态本身是子类类型向父类类型向上转换的过程

多态向下转型 多态本身是父类类型向子类类型向下转换的过程

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

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

记忆:编译看左边,运行看右边。

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

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

*/

public class DemoTest {

public static void main(String[] args) {

//创建电脑对象

Computer computer = new Computer();

computer.powerOn(); //调用电脑类方法

//创建使用鼠标对象 从上转型

Usb useMouse = new Mouse(); //多态写法 格式 父类名称 变量名 = new 子类类型();

//调用电脑类中的usb接口方法,将上面的变量对象作为参数传过去进行判断

computer.userUsbDevice(useMouse);

//创建键盘对象

KeyWord keyWord = new KeyWord(); //不是多态写法,依旧能将其向上转型

//调用电脑类中的usb接口方法,将上面的变量对象作为参数传过去进行判断

computer.userUsbDevice(keyWord);

computer.powerOff();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值