java---OOP之接口

1 接口

1.1 概念:

  • Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现。
  • Java接口和Java抽象类代表的就是抽象类型, 就是我们需要提出的抽象层的具体表现。
  • OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程。
  • 正确地使用接口、抽象类这些太有用的抽象类型做为java结构层次上的顶层。
  • interface 接口名{ 代码… }

1.2 特点:

  • 接口中都是抽象方法
  • 通过interface关键字创建接口
  • 通过implements让子类来实现
  • 可以理解成,接口是一个特殊的抽象类
  • 接口突破了java的单继承的局限性
  • 接口和类之间可以多实现,接口和接口之间可以多继承
  • 接口是对外暴露的规则,是一套开发规范
  • 接口提高了程序的功能扩展,降低了耦合性!! 继承的耦合性很强!!
public class Test1_Interface {
    public static void main(String[] args) {
       //TODO  创建多态对象测试
    }
}

//接口可以看做是程序的一套规范规则
//通过interface关键字定义接口
interface Inter{
    //接口里可以有普通方法吗??--- 不可以,都是抽象方法
    abstract public void save() ;
    abstract public void delete() ;
}

//接口的实现类  和 接口之间是  implements实现的关系
//实现类实现了接口后,有两条路可以选:是一个抽象的实现类   +  重写接口中的所有抽象方法
//abstract class InterImpl implements  Inter {
class InterImpl implements  Inter {
    @Override
    public void save() {
       System.out.println("正在保存您的数据...");
    }
    @Override
    public void delete() {
       System.out.println("正在删除您的数据...");
    }
}

2 接口的用法

2.1 构造方法:

  • 接口里是没有构造方法的。
  • 在创建实现类的对象时默认的super(),是调用的默认Object的无参构造。
//创建接口
interface Inter2{
   //1、接口里可以有构造方法吗?   ---  不能!!
//  public Inter2() {}   
}

2.2 成员变量:

  • 接口里没有成员变量,都是常量。所以,你定义一个变量没有写修饰符时,默认会加上:public static final

2.3 成员方法:

  • 接口里的方法,默认就都是抽象的,如果你不写明是abstract的,那会自动补齐。

2.4 复杂用法:

  • Java中单继承的局限性通过接口可以解决。
  • 接口可以多继承也可以多实现,甚至可以继承的同时多实现。
public class Test4_ComInter {
    public static void main(String[] args) {
       Interface1 in = new Interface1Impl();
       in.save();
       in.update();
    }
}

//创建接口1
interface Interface1{
    void save();
    void update();
}

//创建接口2
interface Interface2{
    void get();
    void delete();
}

//打破了java单继承的局限性,因为接口之间可以多继承,多个接口之间逗号隔开
interface Interface3 extends Interface1,Interface2{
    void add();
}

//接口还可以多实现吗??---可以多实现,只不过接口之间逗号隔开
class ManyImpl implements  Interface1,Interface2{
    public void save() {}
    public void update() {}
    public void get() {}
    public void delete() {}
}

//接口可以继承的同时,多实现?? -- 
class MoreImple extends ManyImpl  implements Interface1,Interface2  {
}

//创建实现类,使用3号接口的功能,需要重写几个方法呢??---同时重写1号和2号和3号接口里的所有功能
class Interface3Impl  implements Interface3{
    @Override
    public void save() {  }
    @Override
    public void update() {  }
    @Override
    public void get() {  }
    @Override
    public void delete() {   }
    @Override
    public void add() {  }
}

//创建实现类
class Interface1Impl implements Interface1{
    @Override
    public void save() {
       System.out.println("save()...");
    }
    @Override
    public void update() {
      System.out.println("update()...");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章