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’单词 命名插入操作) // (所有数据库实现具体方法必须都要按照我的规范声明)
// 在开发中体会 面向接口编程的思想