JAVA 接口(interface) 示例与讲解 详情

tech2024-12-05  8

package com.day29.test;

//接口的使用 举例 // 8. 接口的具体使用 体现了多态性 //9. 接口 实际可以看作一种规范

public class USBTest {          public static void main(String[] args) {         //测试          Computer computer=new Computer();         //1.创建了接口的非匿名实现类的非匿名对象         Flash flash=new Flash();         computer.transferData(flash);                  //以下两个调用体现了 面向对象的多态性         // 可以理解 声明看左边 运行看右边         // 格式  USB usb =new Flash();          // 2. 创建了接口非匿名实现类的匿名对象         computer.transferData(new Flash());                  computer.transferData(new Printer());                  //3. 创建了接口的匿名实现类的非匿名对象         USB phone =new USB() {                          @Override             public void stop() {                 // TODO Auto-generated method stub                 System.out.println("手机开始工作");                              }                          @Override             public void start() {                 // TODO Auto-generated method stub                 System.out.println("手机结束工作");             }         };         computer.transferData(phone);                  //4. 创建了接口的 匿名实现类的匿名对象         computer.transferData(new USB() {                          @Override             public void stop() {                 // TODO Auto-generated method stub                 System.out.println("MP3开始工作");             }                          @Override             public void start() {                 // TODO Auto-generated method stub                 System.out.println("MP3开始工作");                              }         });     }

}

//电脑 class  Computer{          public void transferData(USB usb) {  //声明的是USB这个接口 但是实例化的他的实现类                                           // 格式  USB usb =new Flash()         usb.start();                   System.out.println("具体的传输数据细节");                  usb.stop();              }      }

//这个usb 接口 实际就是定义了一种规范  // 谁来使用电脑类中的 USB 这个功能 都需要遵守这些规范 interface USB{     //定义了 长 宽 最大最小传输速度                    void start();          void stop(); }

//u盘 class Flash implements USB{

    @Override     public void start() {         // TODO Auto-generated method stub         System.out.println("u盘开启工作");              }

    @Override     public void stop() {         // TODO Auto-generated method stub         System.out.println("u盘停止工作");              }      }

//打印机 class Printer implements USB{

    @Override     public void start() {         // TODO Auto-generated method stub         System.out.println("打印机开始工作");     }

    @Override     public void stop() {         // TODO Auto-generated method stub         System.out.println("打印机停止工作");              }      }

//为什么 要使用 接口这种规范来是设计程序

//例如 // 现在java 去操作数据库  // 数据库种类有 mysql oracle sqlserver 等等 // 在没有接口这种规范的时候  // 实际 Java 可以之间操作  mysql 或者是 oracle  // 如果 mysql 和 oracle 实现增删改查的方式不同 或者实现的方法名不同 //  比如  //  mysql 实现插入数据操作方法  叫做 add //  oracle 实现插入数据操作 叫做方法 insert //  这样对于我们程序员来说  //   如果今天你要去操作 mysql 你要去学习 mysql中的方法 //   如果明天你要去操作 oracle 你就要去学习oracle中的方法  //   这样会非常的累 而且不好记住 //   所以在程序设计的时候 JAVA大神们就会利用 接口这种规范和面向对象的多态性   //   把JAVA 去往各种数据库路上 架起了一个 桥梁(JDBC) 他们去定义数据库的规范  //    然后数据库实现类 必须遵循这个规范来开发具体实现的方法 //    程序员在调用数据库就不必考虑到底是mysql 或者是oracle  //    程序员直接在这个桥梁上按照规范调用方法 即可实现各种数据库的操作 //   这样对于调用数据库操作 大家只用记住接口定义的方法即可 //   无需再去一一学习底层数据库的操作 大大提高了开发效率 //   java -> JDBC(这里封装了各种数据库操作的接口)-> oracle/ mysql /sqlserver  //   数据库类中实现操作数据库的方法 必须按照接口的规范开发

 //  (在定义规范的时候不清楚mysql/oracle 具体实现的逻辑 所以只能定义抽象方法 具体的实现通过‘数据库实现类’来实现 )  [多态的体现]  //    (我把规矩定在这边,在这里操作 必须都要遵守我的规范 ) //     (比如方法名 我规范 使用‘add’单词 命名插入操作) //     (所有数据库实现具体方法必须都要按照我的规范声明)

//    在开发中体会  面向接口编程的思想

最新回复(0)