接口的基本概念

接口就是一种比抽象还抽象的类,体现在所有方法都为抽象方法
定义类的关键字是class,而定义接口的关键字是interface

  1. public interface InterfaceTest {
  2. /*public static final */int cnt=1;//里面只能有常量
  3. // private void show(){};//从java9开始允许接口中出现私有方法
  4. // public void show(){}//里面只能有抽象方法(新特性除外)
  5. /*public abstract */ void show();//
  6. }

如:金属接口 货币接口 黄金类
弥补java中继承不能多继承的问题.

  1. public interface Metal {
  2. public abstract void shine();
  3. }
  4. public interface Money {
  5. public abstract void buy();
  6. }
  7. public class Gold implements Metal,Money {
  8. @Override
  9. public void shine() {
  10. System.out.println("发粗了黄金色光芒");
  11. }
  12. @Override
  13. public void buy() {
  14. System.out.println("买了好多好吃的");
  15. }
  16. public static void main(String[] args) {
  17. //1.声明接口类型的引用指向实现类的对象,形成多态
  18. Metal m1=new Gold();
  19. m1.shine();
  20. Money mn=new Gold();
  21. mn.buy();
  22. }
  23. }

类和接口之间的关系

接口 - 图1

  1. public interface Runner {
  2. //自定义抽象方法描述奔跑的行为
  3. public abstract void run();
  4. }
  5. public interface Hunter extends Runner{
  6. //自定义成员方法描述捕猎的行为
  7. public abstract void hunt();
  8. }
  9. package com.lagou.task09;
  10. /**
  11. * @author lijing
  12. * @date 2020/9/21 15:38
  13. * @description
  14. */
  15. public class Man implements Hunter{
  16. @Override
  17. public void hunt() {
  18. System.out.println("正在追赶一只小白兔");
  19. }
  20. @Override
  21. public void run() {
  22. System.out.println("正在被胖虎追赶,玩命奔跑");
  23. }
  24. public static void main(String[] args) {
  25. //1.声明接口类型的引用指向实现类的对象 形成了多态
  26. Runner runner=new Man();
  27. runner.run();
  28. Hunter hunter=new Man();
  29. hunter.hunt();
  30. }
  31. }

接口 - 图2

接口和抽象类的主要区别

  • 定义抽象类的关键字是abstract class ,定义接口的关键字是interface
  • 继承抽象类的关键字是extends,实现接口的关键字是implements
  • 继承抽象类是单继承,而实现接口支持多实现.
  • 抽象类中可以有构造方法,而接口中不可以有构造方法
  • 抽象中可以有成员变量,而接口中只可以有常量
  • 抽象类中可以有成员方法,而接口中只可以有抽象方法
  • 抽象类中增加方法时子类可以不用重写,而接口中增加方法时实现类需要重写(Java8以前的版本)
  • 从Java8开始增加新特性,接口中允许出现非抽象方法和静态方法,但非抽象方法需要使用default关键字修饰

接口 - 图3

  • Java9开始增加新特性,接口中允许出现私有方法

接口 - 图4
跟改为:
接口 - 图5