Java日志第20天 2020.7.25

综合实例

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

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

定义USB接口

public interface USB {

    public abstract void open();

    public abstract void close();

}

定义鼠标类和键盘类,实现USB接口

public class Mouse implements USB {

    @Override
    public void open() {
        System.out.println("鼠标已连接");
    }

    @Override
    public void close() {
        System.out.println("鼠标已断开");
    }

    public void click(){
        System.out.println("鼠标点击");
    }
}
public class Keyboard implements USB {

    @Override
    public void open() {
        System.out.println("键盘已连接");
    }

    @Override
    public void close() {
        System.out.println("键盘已断开");
    }

    public void type(){
        System.out.println("键盘打字");
    }

}

定义Laptop笔记本电脑类,实现开启和关闭功能以及鼠标和键盘的使用

public class Laptop {
    public void powerOn(){
        System.out.println("开机");
    }

    public void powerOff(){
        System.out.println("关机");
    }

    public void connectedDevice(USB usb){
        usb.open();
    }

    public void useDevice(USB usb){
        if(usb instanceof Mouse){
            Mouse mouse = (Mouse) usb;
            mouse.click();
        } else if(usb instanceof Keyboard){
            Keyboard keyboard = (Keyboard) usb;
            keyboard.type();
        }
    }

    public void disconnectedDevice(USB usb){
        usb.close();
    }
}

实现类

public class DemoMain {

    public static void main(String[] args) {
        //创建一个电脑
        Laptop laptop = new Laptop();
        //打开电脑
        laptop.powerOn();
        //连接鼠标
        USB usbMouse = new Mouse();//多态方法
        laptop.connectedDevice(usbMouse);

        //连接键盘
        Keyboard usbKeyboard = new Keyboard();//不使用多态方法
        laptop.connectedDevice(usbKeyboard);//正确写法

        //使用键盘和鼠标
        laptop.useDevice(usbMouse);
        laptop.useDevice(usbKeyboard);

        //断开键盘和鼠标
        laptop.disconnectedDevice(usbMouse);
        laptop.disconnectedDevice(usbKeyboard);

        //电脑关机
        laptop.powerOff();
    }
}

实验结果如下

final关键字

final关键字代表最终的,不可改变的。

常见的四种用法:

1.修饰一个类

2.修饰一个方法

3.修饰一个局部变量

4.修饰一个成员变量

final修饰类

格式:public final class 类名称 { //... }

含义:final修饰的类不能有任何子类,但是可以有父类。(最高父类Object)

注意:因为final类没有子类,所以final修饰的类中的所有方法都无法被覆盖重写。

final修饰方法

格式:修饰符 final 返回值类型 方法名称(参数列表){ 方法体 }

含义:final修饰方法不能被覆盖重写

*对于类和方法,abstract和final不能同时使用。

final修饰局部变量

final修饰的局部变量只能对其进行唯一一次赋值,一旦赋值便不可以改变

*对于基本类型,不可改变指的是数据

*对于引用类型,不可改变指的是地址值,可以对其成员变量更改值

final修饰成员变量

由于成员变量具有默认值,所以需要手动赋值。

可以直接赋值,或者通过构造方法进行赋值,但二者选其一即可。

要保证类中所有的重载构造方法都对有final修饰的成员变量进行赋值。

今天的知识比较简单,明天从修饰符开始学习,加油!

猜你喜欢

转载自www.cnblogs.com/Gazikel/p/13375792.html