2022.3.29 接口


接口

  • 普通类:只有具体实现

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

  • 接口:只有规范!自己无法写方法~专业的约束!约束和实现分离:面向接口编程

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

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

  • 接口不能实例化(不能new),接口中没有构造方法(构造器)

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

声明类的关键字class,声明接口的关键字是interface

 package com.oop.demo12;
 ?
 //接口都需要有实现类
 public interface UserServise {
     /*
     //接口中的所有的定义其实都是抽象的 public abstract
     //public abstract 是灰色的,接口中的方法默认带public abstract
     public abstract void run();
     void run1();//直接这样写就可以
      */
     void add(String name);
     void delete(String name);
     void update(String name);
     void query(String name);
 ?
     //默认public static final,一般不会在接口中定义常量
     public static final int age = 99;
 }
 ?
 package com.oop.demo12;
 ?
 public interface TimeServise {
     void timer();
 }
 ?
 package com.oop.demo12;
 //抽象类:extends 只能单继承
 //实现类   类可以实现接口,通过 implements 关键字,可以继承多个
 //implements 接口名
 public class UserServiseImpl implements UserServise,TimeServise{
     //实现了接口的类,就必须重写接口中的方法
     @Override
     public void add(String name) {
 ?
    }
 ?
     @Override
     public void delete(String name) {
 ?
    }
 ?
     @Override
     public void update(String name) {
 ?
    }
 ?
     @Override
     public void query(String name) {
 ?
    }
     @Override
     public void timer() {
 ?
    }
 ?
 }