Day01-接口

接口

  • 普通类:只有具体实现
  • 抽象类:具体实现和规范(抽象方法)都有!
  • 接口:只有规范!自己无法写方法~专业的约束!约束和现实分离:面向接口编程
  • 接口的本质是契约,就像法律一样,制定好大家都遵守
  • OO的精髓,是对对象的抽象,最能体现这一点的就是接口,为什么我们讨论设计模式都只针对具备了抽象能力的语言(比如C++、java、c#等),就是因为设计模式所研究的,实际上就是如何合理的去抽象
//interface 定义的关键字,接口都需要有实现类
//抽象的思维~java
public interface UserService{
    //接口中的所有的定义其实都是抽象的 public abstract
   
    //属性默认的都是常量~public static final
    int age=99;
 
    void add(String name);
}
//可以实现多个接口implements
public class UserServiceImpl implement UserService{
    @override
    public void add(String name){
        
    }
    
}

作用:

  1. 约束
  2. 定义一些方法,让不同的人实现
  3. 方法是 public abstract
  4. 变量是 public static final
  5. 接口不能被实例化,接口中没有构造方法
  6. 可以实现多个接口implements
  7. 必须要重写接口中的方法

java8中关于接口的新规范

  1. 接口中的静态方法,只能通过接口来调用

  2. 通过实现类的对象,可以调用接口中的默认方法

    如果实现类重写了接口中的默认方法,调用时,任然调用的是重写后的方法

  3. 如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的默认方法,那么子类在没重写此方法的情况下,默认调用的是父类中的同名同参数的方法-->父类优先原则

  4. 如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么在实现类没重写此方法的情况下,报错-->接口冲突,这就需要我们必须在实现类中重写此方法

  5. 如何在子类(或实现类)的方法中调用父类\接口中被重写的方法

    public void myMethod()
        method3();//调用自己定义的重写的方法
        super.method3();//调用的是父类中声明的
        //调用接口中的默认方法
        CompareA.super.method3();
        CompareB.super.method3();
    

抽象类和接口的异同?

相同点:不能实例化;都可以包含抽象方法;多实现

不同点:把抽象类和接口(java7\java8\java9)的定义\内部结构解释说明

​ 类:单继承性 接口:多继承

posted @ 2021-02-01 15:18  伟成李  阅读(31)  评论(0)    收藏  举报