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修饰的成员变量进行赋值。
今天的知识比较简单,明天从修饰符开始学习,加油!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南