Java 接口

初期理解,可以认为是一个特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示。

接口格式:

  • 通过interface来定义。
  • 接口中的成员都是共有的。
  • 一个类可以对接口进行多实现,也弥补了多继承带来的安全隐患,所以java对多继承进行了改良。
  • 用多实现方法来体现多继承的特性。
  • 一个类可以继承一个类的同时,实现多个接口。
  • 接口与接口之间是继承关系,而且可以多继承。
  • 接口中的成员修饰符是固定的。
    • 成员常量:public static final
    • 成员函数:public abstract
  • 记住:接口中的成员都是public的。

接口的特点

  • 接口是对外暴露的规则。
  • 接口是程序的功能扩展。
  • 接口可以用来多实现。
  • 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
  • 接口与接口之间可以有继承关系。
  • 接口:是不可以创建对象的,因为有抽象方法。
    • 需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。 否则子类是一个抽象类。
  • 接口可以被类多实现,也是对多继承不支持的转换形式。java支持多实现。

抽象类和接口异同

相同:

  • 都可以在内部定义抽象方法。
  • 通常都在顶层。
  • 都不可以实例化,都需要子类来实现。

不同点:

  • 抽象类中可以定义抽象方法和非抽象方法,
    • 而接口中只能定义抽象方法。
  • 接口的出现可以多实现。
    • 抽象类只能单继承。
    • 也就是说:接口的出现避免了单继承的局限性。
  • 继承和实现的关系不一致。继承:is a,实现:like a
interface Inter
{
	public static final int NUM = 3;
	public abstract void show();
}

interface InterA
{
	public abstract void show();
}

class Demo
{
	public void function(){}
}

class Test extends Demo implements Inter,InterA
{
	public void show(){}
}


interface A
{
	void methodA();
}
interface B //extends A
{
	void methodB();
}

interface C extends B,A
{
	void methodC();
}

class D implements C
{
	public void methodA(){}
	public void methodC(){}
	public void methodB(){}
}


class InterfaceDemo 
{
	public static void main(String[] args) 
	{
		Test t = new Test();
		System.out.println(t.NUM);
		System.out.println(Test.NUM);
		System.out.println(Inter.NUM);

	}
}