接口(二):

接口的繼承與類的繼承區別:java

一、java類是單繼承的,不能夠同時繼承,可是能夠多重繼承若是C想繼承A和B,不能夠寫 C extends A,B,可是能夠間接繼承 如: A extends B 而後 C extends A 這樣C 就至關於繼承了A ,B spa

二、接口能夠多繼承,一個接口能夠同時繼承多個直接父接口,如:C extends  A,B(A,B,C均爲接口)blog

三、與類繼承類似,子接口繼承某個父接口,能夠得到父接口裏定義的全部抽象方法、常量,如:繼承

interface InterfaceA{
	int a=1;
	void testA();
}

interface InterfaceB{
	int b=2;
	void testB();
}

interface InterfaceC extends InterfaceA,InterfaceB{
	int c=3;
	void testC();
}

public class InterfaceExtendsTest{
	public static void main(String[] args){
		System.out.println(InterfaceC.a);
		System.out.println(InterfaceC.b);
		System.out.println(InterfaceC.c);
	}
}

 運行結果:接口

把上面代碼稍微改動一下,體會其中本質的變化:編譯

interface InterfaceA{
	int a=1;
	void testA();
}

interface InterfaceB{
	int b=2;
	void testA();
	void testB();
}

interface InterfaceC extends InterfaceA,InterfaceB{
	int c=3;
	void testC();
}

public class ClassExtendsInterface implements InterfaceC{
	//-此處實現的是接口 InterfaceA 中的方法testA(),仍是接口 InterfaceB 中的方法testA()?
	public void testA(){
			
	}

	public void testB(){
			
	}

	public void testC(){
			
	}
	
	public static void main(String[] args){
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
}

 運行結果:class

再把上面代碼修改一下,仔細體會其中的變化:test

interface InterfaceA{
	int a=1;
	void testA();
}

interface InterfaceB{
	int b=2;
	void testA();
	void testB();
}

interface InterfaceC extends InterfaceA,InterfaceB{
	int c=3;
	void testC();
}

public class ClassExtendsInterface implements InterfaceC{
	//-此處把實現方法testA()屏蔽掉
	//public void testA(){
			
	//}

	public void testB(){
			
	}

	public void testC(){
			
	}
	
	public static void main(String[] args){
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
}

 編譯結果:方法

再把上面的代碼修改一下:im

interface InterfaceA{
	int a=1;
	//-屏蔽掉接口InterfaceA中定義的方法testA()
	//void testA();
}

interface InterfaceB{
	int b=2;
	void testA();
	void testB();
}

interface InterfaceC extends InterfaceA,InterfaceB{
	int c=3;
	void testC();
}

public class ClassExtendsInterface implements InterfaceC{
	//-此處把實現方法testA()屏蔽掉
	//public void testA(){
			
	//}

	public void testB(){
			
	}

	public void testC(){
			
	}
	
	public static void main(String[] args){
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
}

 編譯結果:

再把上面代碼修改一下:

interface InterfaceA{
	int a=1;
	void testA();
}

interface InterfaceB{
	int b=2;
	void testA();
	void testB();
}

//-此處把繼承接口InterfaceB,InterfaceA順序修改一下
interface InterfaceC extends InterfaceB,InterfaceA{
	int c=3;
	void testC();
}

public class ClassExtendsInterface implements InterfaceC{
	//-此處把實現方法testA()屏蔽掉
	//public void testA(){
			
	//}

	public void testB(){
			
	}

	public void testC(){
			
	}
	
	public static void main(String[] args){
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
	}
}

 編譯結果:

總結:

對於繼承多個直接父接口的接口來講,若是多個父接口中有相同的抽象方法,則子接口中只有一個該抽象方法,而且是按繼承順序的第一個父接口內的這個方法

相關文章
相關標籤/搜索