接口的基本概念
接口就是一种比抽象还抽象的类,体现在所有方法都为抽象方法
定义类的关键字是class,而定义接口的关键字是interface
public interface InterfaceTest {/*public static final */int cnt=1;//里面只能有常量// private void show(){};//从java9开始允许接口中出现私有方法// public void show(){}//里面只能有抽象方法(新特性除外)/*public abstract */ void show();//}
如:金属接口 货币接口 黄金类
弥补java中继承不能多继承的问题.
public interface Metal {public abstract void shine();}public interface Money {public abstract void buy();}public class Gold implements Metal,Money {@Overridepublic void shine() {System.out.println("发粗了黄金色光芒");}@Overridepublic void buy() {System.out.println("买了好多好吃的");}public static void main(String[] args) {//1.声明接口类型的引用指向实现类的对象,形成多态Metal m1=new Gold();m1.shine();Money mn=new Gold();mn.buy();}}
类和接口之间的关系

public interface Runner {//自定义抽象方法描述奔跑的行为public abstract void run();}public interface Hunter extends Runner{//自定义成员方法描述捕猎的行为public abstract void hunt();}package com.lagou.task09;/*** @author lijing* @date 2020/9/21 15:38* @description*/public class Man implements Hunter{@Overridepublic void hunt() {System.out.println("正在追赶一只小白兔");}@Overridepublic void run() {System.out.println("正在被胖虎追赶,玩命奔跑");}public static void main(String[] args) {//1.声明接口类型的引用指向实现类的对象 形成了多态Runner runner=new Man();runner.run();Hunter hunter=new Man();hunter.hunt();}}
接口和抽象类的主要区别
- 定义抽象类的关键字是abstract class ,定义接口的关键字是interface
- 继承抽象类的关键字是extends,实现接口的关键字是implements
- 继承抽象类是单继承,而实现接口支持多实现.
- 抽象类中可以有构造方法,而接口中不可以有构造方法
- 抽象中可以有成员变量,而接口中只可以有常量
- 抽象类中可以有成员方法,而接口中只可以有抽象方法
- 抽象类中增加方法时子类可以不用重写,而接口中增加方法时实现类需要重写(Java8以前的版本)
- 从Java8开始增加新特性,接口中允许出现非抽象方法和静态方法,但非抽象方法需要使用default关键字修饰

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

