java 接口(interface)语法的使用和详解

tech2024-12-07  5

package com.day29.test;

public class Test {         public static void main(String[] args) {             System.out.println("接口");             // 有的时候要多继承父类              // 但是java只支持单继承             // 所以有了接口 就可以实现 多继承这个状态             // 但是接口 子类 不能叫继承接口 而是叫 实现接口             //而他们之间不是子父的关系              // 而是有一些共同特征             // 例如 鼠标 键盘 打印机 等等 都支持USB链接             // 接口是一种规范 定义的是一种规则             // 体现了现实世界中 如果你是 ... 则必须能...的思想             // 继承是一个是不是的关系 而接口实现则是 能不能的关系             // 接口本质是锲约 标准 规范 就像我们的法律一样              //  制定好后大家都要遵守             // 接口 举例             //  可以飞      攻击性             //              // 飞机 子弹  风筝 热气球  这些都可以飞             //  但是 子弹 既可以飞 也有攻击性              //  接口的扩展性更强                           //测试接口的功能             Plane plane=new Plane();             plane.fly();                      } }

//接口的定义 //1. 接口 使用 interface 定义 // 2.接口和类是并列的结构

//3.如何定义接口 : 定义接口的成员 // JDK7 及以前 : //  只能够定义全局常量和 抽象方法 //  全局常量 public static final  //  抽象方法: public abstract  // JDK8 : 除了够定义全局常量和 抽象方法 还可以定义静态方法和默认方法

//4. 接口中是不可以定义构造器 意味着接口不能实例化

//5. 在java开发中 让类实现接口里的方法 使用关键字 implements 建立关系 // 如果实现类覆盖了接口中的所有抽象方法 则此类可以实例化 // 如果实现类中没有覆盖了接口中的抽象方法  此类必须定义为抽象类 abstract  //  对于实现类中与接口建立关系后 实现类中实现接口中的方法 // 我们更习惯叫他 '实现方法' // 对于继承了抽象类 子类去实现抽象类中的抽象方法  // 我们一般叫做 '重写方法'

// 6. java 类中可以实现多个接口   弥补了 java的单继承的局限性 :下面 子弹类 举例说明

// 7. 接口和接口之间可以继承 而且可以多继承 //  类与类之间 叫做 继承 //  类与接口之间 叫做 实现 //  接口与接口之间 叫做 继承 // ******************************** // 8. 接口的具体使用 体现了多态性 // 9. 接口 实际可以看作一种规范 // //  经典面试题: 抽象类与接口有哪些异同? //  

interface Flyable{     //全局常量      // 在接口定义中 public static final  这些可以省略      // 默认是存在的     public static final int MAX_SPEED=7900;  //第一宇宙速度          public static final int MIX_SPEED=1;          //抽象方法     public abstract void  fly();          //  在接口定义方法 public abstract 也可以省略     public abstract void stop();      } //攻击性的类 interface Attackable{     void attack(); }

//子弹类  实现了多个接口   //如果又有继承 又有实现接口 // 写法 先继承 后 实现这中 class Bullet extends Object implements Flyable,Attackable{

    @Override     public void attack() {         // TODO Auto-generated method stub         System.out.println("攻击");     }

    @Override     public void fly() {         // TODO Auto-generated method stub         System.out.println("飞");     }              

    @Override     public void stop() {         // TODO Auto-generated method stub         System.out.println("停止");              }      } //飞机类 class Plane implements Flyable{          

    //对于实现类中与接口建立关系后 实现类中实现接口中的方法     // 我们更习惯叫他 实现方法      // 对于继承了抽象类 子类去实现抽象类中的抽象方法     // 我们一般叫做 重写方法     @Override     public void fly() {         // TODO Auto-generated method stub         System.out.println("通过引擎起飞");              }

    @Override     public void stop() {         // TODO Auto-generated method stub         System.out.println("驾驶员 减速停止");              }      }

//**********************

interface aa{      }

interface bb{      } //cc 多继承了 aa ,bb  interface cc extends aa,bb{      }

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

//例如 //现在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)