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

kan*_*arp 18 java abstract-class interface

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

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

Tod*_*odd 59

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

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

public interface Movable {
    void move();
}
Run Code Online (Sandbox Code Playgroud)

跨类层次结构的任意数量的类都可以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!
    }
}
Run Code Online (Sandbox Code Playgroud)

从调用者的角度来看,它只是一个 Movable

Movable movable = ...;
movable.move();  //who am I?
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.

  • 感谢帮助我通过适当的例子来理解接口和抽象之间的区别。 (2认同)

Fos*_*erZ 24

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

abstract class A
{
 //thousands of abstract method();
 abstract methodA();
 abstract methodB();
 abstract methodC();
}

//OR
interface ForOnlymethodA
{
 void methodA();
}
interface FormethodBandmethodC
{
 void methodB();
 void methodC();
}
Run Code Online (Sandbox Code Playgroud)

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


Rob*_*ert 7

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

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

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

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