java中的接口为什么可以多继承,其他类不能呢?

Python021

java中的接口为什么可以多继承,其他类不能呢?,第1张

java 在编译的时候就会检查 类是不是多继承,如果出现多继承编译不通过。但是在java语法中接口是可以多继承的。

拓展阅读:

java 如果出现多继承、父类中都有相同的属性和name 值 子类如果使用父类的属性和name 值 无法确定是哪一个父类的是 属性和name值。

父类中如果相同的方法,并且子类并没有覆盖该方法。子类调用父类的时候 无法判断是那个父类的方法。

接口是可以多继承的。接口(jdk 1.7 以下版本)里面的方法并有实现,即使接口之间具有相同的方法仍然是可以的 几个接口可以有想通的实现类和实现方法。而且接口 接口里面的成员变量都是 static   final的  有自己静态域 只能自己使用。

接口的实现类可以有多个 。(java bean 注解注入) 一个接口(用多个实现类)被注入进来。调用方法的时候。会先依据bean 查找那个 一样的bean 。调用该实现类的方法。其次如过 实现类上都没有注解的 bean 会按照加载的先后顺序去调用的。

可以多继承接口,但是不能多继承普通类。\x0d\x0a类定义属性和方法 描述某一类事物的抽象 \x0d\x0a而接口定义的是行为 并不限于任何具体意向。 \x0d\x0a\x0d\x0a按照逻辑上来说 单继承更明确 一个子类就应该是其父类代表的事物中的某个更具体的类别 不应该即是这种东西又是那种东西 。\x0d\x0a而从实用角度上来说 单继承易读 易维护 语义清晰 逻辑清楚。 \x0d\x0a\x0d\x0a而接口则不同 接口只定义一些公共行为 比如有两个接口 一个定义了跑这个动作 另一个定义了走这个动作 人这个类就可以同时实现这两个接口所定义的行为 。\x0d\x0a\x0d\x0a类对接口的implements称作实现 不能叫做继承 。\x0d\x0a\x0d\x0a当然 接口可以多继承接口 因为接口只定义行为 并不包含类别的含义 不指代具体的某类事物 而且 从语义上来说 接口对接口的继承称之为扩展更为合适。

Java语法中,接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类。

Java语法中,使用interface定义一个接口,使用class定义一个类,使用关键字abstract+class定义一个抽象类。以下分别对这3个知识点进行解析:

1、接口可以继承接口

接口可以多继承接口,例如:Interface1ExtendsInterface2,Interface3,Interface4??

代码示例为:

publicinterfaceInterface1{

publicvoidmethod1()

}

publicinterfaceInterface2extendsInterface1{

publicvoidmethod2()

}

publicinterfaceInterface3extendsInterface1,Interface2{

publicvoidmethod3()

}

2、抽象类可以实现接口

抽象类实现接口时,可以完全重写或覆盖接口中的方法,也可只重写接口中的部分方法。

代码示例为:

publicinterfaceInterfaceA{

publicvoidmethod1()

publicvoidmethod2()

publicvoidmethod3()

}

abstractclassClassAimplementsInterfaceA{

publicvoidmethod1(){}

publicvoidmethod2(){}

}

3、抽象类可以继承实体类

抽象类可以继承实体类,但前提是实体类必须有明确的构造函数。

代码示例为:

classEntityA{

publicEntityA(){

//构造函数

}

publicvoidhelloWorld(){

System.out.println("hello")

}

}

abstractclassClassAextendsEntityA{}

扩展资料:

1、Java继承或实现接口时需要遵循的原则:

(1)类优先于接口。如果一个子类继承的父类和接口有相同的方法实现。那么子类继承父类的方法。

(2)子类型中的方法优先于父类型中的方法。

(3)如果以上条件都不满足,则必须显示覆盖/实现其方法,或者声明成abstract。

2、Java实现多继承的方式:

(1)Java中一个类不能继承多个具体class。 

(2)一个类只可继承自一个具体class,但可实现多个接口。interface不涉及到实现细节,不与任何存储空间有关连。新类可继承自一个具象class,其余继承都得是interfaces。

(3)outerclass不可继承自多个具体class,可在其内部设多个innerclass,每个innerclass都能各自继承某一实现类。innerclass不受限于outerclass是否已经继承自某一实现类。 

(4)innerclass可以说是多重继承问题的完整解决方案。一个类不能继承自多个一般类。但我们可以让其内部的多个innerclass各自继承某一实现类达到类似的目的。

参考资料来源:Java官方文档-接口(interface)