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
意味着,方法的实现无法看到。 扩展此接口的类必须实现其中声明的所有方法。
更多信息: 维基回答
抽象类的优点? 除了你可以实现多个接口但只扩展一个(抽象或非抽象)类的事实,它与抽象类相同,它的所有方法都是抽象的和公共的