interface USB{ void start(); void stop(); } class C{ public static void work(USB u){ u.start(); System.out.println("工作中"); u.stop(); } } class USBDisk implements USB{ @Override public void start() { System.out.println("U盘开始工作"); } @Override public void stop() { System.out.println("U盘停止工作"); } } class Printer implements USB{ @Override public void start() { System.out.println("打印机开始工作"); } @Override public void stop() { System.out.println("打印机停止工作"); } } public class AbsDemo01 { public static void main(String[] args) { C.work(new USBDisk()); C.work(new Printer()); } }
结果:
U盘开始工作
工作中
U盘停止工作
打印机开始工作
工作中
打印机停止工作
分析:
1、在接口中,有两个抽象的方法,void start()和void stop()。其实在这两个抽象方法中,前面public abstract被省略了。
2、在类 C中,创建了一个work类方法。而在main()方法中,又用到了C.word(new USBDisk())和C.word(new Printer())。在这里直接用类名.方法名进行调用方法,用到了static关键字的知识。使用static修饰的类叫做类方法,类方法可以由类名直接调用,也可由实例对象进行调用。(建议用类名直接调用,因为可以直接省略了用new实例化的步骤,更简洁,更方便)
(1)使用static声明的属性,被称为全局属性。
(2)使用static声明的方法,可以直接通过类名调用。
(3)使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能访问的。
3、在main()方法中,C.work(new USBDisk)进行传送参数时, 用到了父类声明和子类实例化的知识。我们可以这样来理解:USB u = new USBDisk,声明部分为接口,赋值部分为实现类的这个对象u,在调用重写的抽象方法时,是调用实现类的方法。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步