接口(二):

接口的继承与类的继承区别: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);
	}
}

 编译结果:

总结:

对于继承多个直接父接口的接口来讲,若是多个父接口中有相同的抽象方法,则子接口中只有一个该抽象方法,而且是按继承顺序的第一个父接口内的这个方法

相关文章
相关标签/搜索