java允许一个接口继承多个接口吗_关于继承:接口可以在Java中扩展多个接口吗?...

接口可以在Java中扩展多个接口吗? 此代码在我的IDE中显示有效,并且它确实编译:

interface Foo extends Runnable, Set, Comparator { }

但我听说Java中不允许多重继承。 为什么接口似乎有例外?

哪篇文章说不可能? 他们要么错了,要么你误解了他们,他们谈论的是阶级而不是接口。

这个问题似乎是偏离主题的,因为它可以很容易地通过自我研究来回答

......或者只是通过仔细阅读你发现的文章。

@StephenC如果他确实发现了矛盾的文章,他应该发布它们。 这样人们就知道不要阅读这些文章......

@MohammadS--这是事实,但我怀疑是这样的。 这是非常基本的东西,我敢打赌问题在于阅读,而不是写作......

这个问题的答案为我节省了时间。 我认为它作为一个有效的问题具有价值。

是的,扩展和实施是不同的。

有用的问题,我做了这个期待我的IDE发出一些警告,惊讶地看到没有。 因此,我在不知不觉中输入谷歌与操作相同的问题,这导致我在这个页面上有一些答案/确认

是的,你可以做到。接口可以扩展多个接口,如下所示:

interface Maininterface extends inter1, inter2, inter3 {

// methods

}

单个类也可以实现多个接口。如果两个接口有一个定义相同名称和签名的方法怎么办?

有一个棘手的问题:

interface A {

void test();

}

interface B {

void test();

}

class C implements A, B {

@Override

public void test() {

}

}

然后单个实现适用于两个:)。

在这里阅读我的完整帖子:

http://codeinventions.blogspot.com/2014/07/can-interface-extend-multiple.html

@RahulBhadana抽象方法应该覆盖对吗?

如果接口A的接口为void test(),接口B的接口为boolean test(),该怎么办? (这是钻石问题的表兄吗?)__审查它并且明智的事情发生:如果返回类型不同,则不允许。

@sureshatta - 那会发生什么? 这两个都叫?

类不允许2个方法具有不同的返回类型的相同签名。stackoverflow.com/questions/16149285/

接口可以扩展多个接口。

一个类可以实现多个接口。

但是,一个类只能扩展一个类。

在谈论interface和class时,请小心如何使用单词extends和implements。

简短的答案,解释一切......

Can an interface extend multiple interfaces in java?

答案是:是的。

根据JLS

An interface may be declared to be a direct extension of one or more

other interfaces, meaning that it implicitly specifies all the member

types, abstract methods, and constants of the interfaces it extends,

except for any member types and constants that it may hide.

JLS ="Java语言规范",这是这些问题的权威来源。

在有关多继承类型的Oracle文档页面中,我们可以在此处找到准确的答案。

这里我们首先应该知道java中多重继承的类型: -

多重继承状态。

多重继承的实现。

多重继承的类型。

Java"不支持状态的多重继承,但它支持使用默认方法实现多次继承,因为java 8发布和带接口的类型的多重继承。

那么这里出现的问题就是"钻石问题"以及Java如何解决这个问题: -

在多重继承实现的情况下,java编译器会出现编译错误,并要求用户通过指定接口名称来修复它。

这里的例子: -

interface A {

void method();

}

interface B extends A {

@Override

default void method() {

System.out.println("B");

}

}

interface C extends A {

@Override

default void method() {

System.out.println("C");

}

}

interface D extends B, C {

}

所以在这里我们会得到错误: -

接口D从类型B和C继承方法()的无关默认值。接口D扩展B,C

您可以修复它: -

interface D extends B, C {

@Override

default void method() {

B.super.method();

}

}

在java的多重继承中允许它,因为接口不包含可变字段,并且只有一个实现属于该类,所以java不会给出任何问题,它允许你这样做。

在结论中我们可以说java不支持多重继承状态,但它确实支持多重继承实现和多重继承类型。

您可以扩展多个Interfaces,但不能扩展多个classes。

Java中不可能扩展多个类的原因是C ++的可能性很差。

多重继承的替代方案是类可以实现多个接口(或者接口可以扩展多个接口)

A Java class can only extend one parent class. Multiple inheritance is not allowed. Interfaces are not classes, however, and an interface can extend more than one parent interface.

例如,看看这里:http://www.tutorialspoint.com/java/java_interfaces.htm

我认为你的困惑在于多重继承,在这种情况下这样做是不好的做法,在Java中这也是不可能的。但是,Java中允许实现多个接口,并且它也是安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值