java中一个接口可以继承几个接口吗
在网上无意中看一人说定义一个接口时,这个接口可以继承多个接口。
比方说有接口A和接口B,然后在定义C接口时,写:interface C extends A, B {}。可以吗?
初学java。 展开
可以,接口是常量值和方法定义的集合,是一种特殊的抽象类,可以继承多个接口。例如:Interface3 Extends Interface0, Interface1, interface……。
java接口解析如下:
在Java中,定义一个接口的形式如下:
[public] interface InterfaceName {
}
接口中可以含有变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量,而方法会被隐式地指定为public abstract方法且只能是public abstract方法,并且接口中所有的方法不能有具体的实现、
也就是说,接口中的方法必须都是抽象方法。
要让一个类遵循某组特地的接口需要使用implements关键字,具体格式如下:
class ClassName implements Interface1,Interface2,[....]{
}
可以看出,允许一个类遵循多个特定的接口。如果一个非抽象类遵循了某个接口,就必须实现该接口中的所有方法。对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法。
扩展资料:
java继承接口的特性:
1)一个类如果实现了一个借口,则要实现该接口的所有方法。
2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。
3)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。
参考资料:
java接口可以多继承。
interface C extends A, B {}是可以的。
一个类可以实现多个接口:class D implements A,B,C{}。
但是一个类只能继承一个类,不能继承多个类:class B extends A{}。
在继承类的同时,也可以继承接口:class E extends D implements A,B,C{}。
接口的使用原则如下:
1、接口必须要有子类,但此时一个子类可以使用implements关键字实现多个接口。
2、接口的子类(如果不是抽象类),那么必须要覆写接口中的全部抽象方法。
3、接口的对象可以利用子类对象的向上转型进行实例化。
扩展资料:
java接口应用时需注意:
1)一个类如果实现了一个接口,则要实现该接口的所有方法。
2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。
3)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。
参考资料来源:百度百科—java接口
interface C extends A, B {}是可以的.
一个类可以实现多个接口:
class D implements A,B,C{}
但是一个类只能继承一个类,不能继承多个类
class B extends A{}
在继承类的同时,也可以继承接口:
class E extends D implements A,B,C{}
这也正是选择用接口而不是抽象类的原因
java类是单继承的。classB Extends classA
java接口可以多继承。Interface3 Extends Interface0, Interface1, interface……
不允许类多重继承的主要原因是,如果A同时继承B和C,而b和c同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。
自我看法
因为类如果可以多继承,实例化时,如果要跳用父类的方法,如果两个一样,
根本就不知道该调用那个父类的方法;
但是接口就不一样了,因为接口继承多个接口,就算多个接口有相同的方法,
但是最终实现接口的类只能实现一个方法且@Override一个方法,所以调用时就
不会有问题了
注意:
1)一个类如果实现了一个借口,则要实现该接口的所有方法。
2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。
3)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。
interface A{
public String AUTHOR = "张三" ;
public void printA() ;
}
interface B{
public void printB() ;
}
interface C extends A,B{
public void printC() ;
}
class X implements C{ // X类线继承B类
public void printA(){
System.out.println("A、Hello World!!!") ;
}
public void printB(){
System.out.println("B、Hello World") ;
}
public void printC(){
System.out.println("C、Hello World ") ;
}
};