在大家了解了继承以后,都知道了继承的特点。

1:单一继承(一个儿子只能有一个亲爹)

2:多层继承(儿子继承亲爹,亲爹继承爷爷)

因此,继承的缺点也就显而易见了。Java语言的继承是单一继承!!

于是乎,Java语言为了解决单一继承问题,给我们提供了一种机制用来解决该问题-------接口

接口

接口是一个比抽象类还要抽象的类,它里面的所有方法都是抽象方法,且只含有常量和抽象方法,可以称它是抽象方法与常量值的集合

接口所用的关键字interface

接口与类的关系是实现关系,不是继承,这是我们又有了一个关键字implements(实现),详细用法下面会讲

重点!!!定义接口类的格式  interface  接口名{

                                                                                [方法体]

                                                                            }

接下来,我们来用一个例子来帮大家深入理解(比尔盖茨例)

需求:比尔盖茨既是一个程序员,又是一位老板,身为程序员有敲代码的方法,身为老板有管理的方法,现在我们应该如何做,来实现这两个方法呢?

分析:由需求我们不难想到创建一个比尔盖茨类,一个程序员类,一个老板类,让他既可以由程序员类里的方法,又可以有老板类里面的方法。怎么做?继承?可是要有两个类里的方法呢。那么我们就想到了我们可以继承一个类,再去实现另一个类,即我们的接口

代码如下

//main方法类
public class jichengDemo {
	public static void main(String [] args){
        //创建对象
		BillGates gates =  new BillGates();
        //敲代码方法
		gates.code();
        //管理方法
		gates.manage();
		
	}
}
//定义老板类(作为接口)
 interface Boss{
    //抽象方法!!
    //管理方法
	public void manage();
}
//定义程序员类(作为父类)
class Programmer {
    //敲代码方法
	public void code(){
		System.out.println("敲代码");
	}
}
//定义比尔盖茨类(作为子类)
class BillGates extends Programmer implements Boss{
    //重写接口类的抽象方法(必须!!)
	public void manage(){
		System.out.println("管理");
	}
}
//结果
敲代码
管理

这是我们便完成了需求。

当然我们也可以把程序员类也定义为接口,这便是接口的多实现特征

代码如下

public class jichengDemo1 {
	public static void main(String [] args){
		BillGates gates =  new BillGates();
		gates.code();
		gates.manage();
		
	}
}
interface Boss{
	public void manage();
}
interface Programmer {
	public void code();
}
//实现多接口
class BillGates implements Boss,Programmer{
	public void manage(){
		System.out.println("管理");
	}
    public void code(){
        System.out.println("敲代码");    
    }
}

多实现定义格式

现在,我们已经基本了解了接口的使用,接下来我们聊聊接口的成员特点

①接口里面的方法只能是抽象方法

②抽象方法默认使用public abstract 关键字修饰 (这两个关键字可以不写,但是强烈建议在实际开发的过程中写上,要不然会产生云里雾里的感觉)

③接口里面只能有常量,不能有变量

interface People{
    public static final int NUM = 10;
}

④接口里面常量默认使用public static final关键字修饰

因为使用了static 关键字的缘故,我们可以用类名调用上面People的常量

System.out.pritnln(People.NUM);

结果

10

学会了接口,我们还要了解一下接口与类之间的各种关系

1:类与类之间的关系(继承关系) 单一继承和多层继承

2:接口与接口之间的关系(继承关系)多继承,且不需要重写父类接口的抽象方法,具体读者自行书写,这里不演示了

//接口的多继承
interface a{}
interface b{}
interface interc extends intera,interb{}

3:接口与类之间的关系(实现关系)多实现(一个儿子可以有无数个干爹)

最后我们来讲一下接口的优点(欢迎补充!!)

1:类与接口之间的多实现关系打破了继承的局限性

2:接口对外提供了规则

3:降低了程序的耦合性(可以实现模块化开发,定义好规则每个人实现自己的模块,提高了开发效率)

希望读者看到这篇文章能够有所启发,希望能帮到大家,谢谢!!!  /手动狗头emoji