接口

OOP的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如c++、Java、c#等),就是因为设计模式所研究的,就是如何合理地去抽象。

  • 普通类:只有具体实现

  • 抽象类:具体实现和规范(抽象方法)都有

  • 接口:只有规范! 自己不能实现方法(没有内容的方法)————专业的约束!

    约束和实现分离:面向接口编程

  • 接口的本质是契约 , 就像人间的法律,制定好后大家都遵守。

    所以接口就是规范,定义的是一组规则,体现了现实世界中 ”如果你是...则必须能...“ 的思想。如果你是天使,这必须能飞。如果你是汽车,则必须能跑。如果你是好人,则必须干掉坏人



  • 定义接口的关键字:interface

  • 接口的作用:定义一些方法,让不同的人(实现类)来实现。接口起到的是约束,是规范的作用

  • 接口中的方法: 默认都是 public abstract 修饰的,一般只写返回类型和方法名

    void add();

  • 接口中的属性: 默认都是常量 public static final,一般不建议在接口中定义变量

  • 接口不能被实例化,因为没有构造方法

  • 实现接口关键字 : implements ,可以实现多个接口,多个接口名用逗号隔开(伪多继承)

  • 实现接口的类的命名为:接口名+Impl

  • 实现类必须重写接口中的方法 : alt + 回车



  • 示例:
//实现类
public class UserServiceImpl implements UserService , TimeService{
    @Override
    public void add() {

    }

    @Override
    public void delete() {

    }

    @Override
    public void update() {

    }

    @Override
    public void quary() {

    }

    @Override
    public void ageDefault() {

    }

    @Override
    public void timer() {

    }
}
//接口1
public interface UserService {

    //定义时修饰符等变 灰色 代表默认,不写也行
    //接口中属性全都是 常量 (一般不建议在接口定义变量):默认 public static final
    public static final int age = 100;
    //接口中所有定义都是抽象的,接口中方法默认 public abstract
    public abstract void add();
    public abstract void delete();
    public abstract void update();
    public abstract void quary();

    void ageDefault();

}

//接口2
public interface TimeService {
    void timer();
}