首页 > 技术文章 > Java 多态的简单应用

kushulaoya 2021-01-18 19:02 原文

电脑判断USB设备

 

 

 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();
}
}

推荐阅读