java中接口的实际用途是什么?

可能重复:
抽象类和接口类?
Java:接口/抽象类/抽象方法

在Java中,抽象类实现了对接口的任何使用。 我知道接口的一个优点是,如果我们实现一个接口,那么我们也可以扩展另一个类。 Java中是否有任何其他用途或优势?

你喜欢什么:一个抽象类中的数千个抽象方法并inheritance这个类或为特定的抽象方法创建尽可能多的接口,并根据需要inheritance尽可能多的接口来使用你想要的那些…

abstract class A { //thousands of abstract method(); abstract methodA(); abstract methodB(); abstract methodC(); } //OR interface ForOnlymethodA { void methodA(); } interface FormethodBandmethodC { void methodB(); void methodC(); } 

因此,只使用inheritance特定接口所需的方法,如果inheritanceAbstract类,则不必inheritance所有在一个类中不需要的方法,而在某些其他类中可能需要这些方法。

接口允许您以多态方式使用不同层次结构中的类。

例如,假设您有以下界面:

 public interface Movable { void move(); } 

跨类层次结构的任意数量的类都可以以自己特定的方式实现Movable ,但仍然可以由一些调用者以统一的方式使用。

所以如果你有以下两个类:

 public class Car extends Vehicle implements Movable { public void move() { //implement move, vroom, vroom! } } public class Horse extends Animal implements Movable { public void move() { //implement move, neigh! } } 

从呼叫者的角度来看,它只是一个Movable

 Movable movable = ...; movable.move(); //who am I? 

我希望这有帮助。

可以实现多个接口,但只能扩展一个类。 完全抽象的类很像接口,除了抽象类可以包含变量。

这真的取决于你需要什么。 C ++允许您扩展所需的类,并且它会变成一种灾难。 只有一个超类的好处是,你只需要担心另外一组实现(即使父有一个父,父的特定组合成为你的父…)

接口允许一个对象扮演许多角色,但它们不允许代码重用。

这真的是为了简化对inheritance的思考。 总的来说,我认为他们做对了。

接口允许Java中的主格键入在不相交的类层次结构中工作 。

这是由于类层次结构和“封闭类型”的“单inheritance ”限制。 我将继续关注子类型多态性和Java的实现;-)

这个问题还有其他解决方案,例如动态类型,结构类型,多重inheritance和特征等。每种方法都有优点和缺点。 接口只是Java采用的方法。

Java接口 – 提供data encapsulation意味着,方法的实现无法看到。 扩展此接口的类必须实现其中声明的所有方法。

更多信息: 维基回答

抽象类的优点? 除了你可以实现多个接口但只扩展一个(抽象或非抽象)类的事实,它与抽象类相同,它的所有方法都是抽象的和公共的