我知道“接口”和“抽象类”之间的区别。但是,您能否提供一个可以通过“接口”构建但不能通过“抽象类”构建的单一示例,而仅留下“多重继承”的示例?

最佳答案

一个简单的示例是表示相同实体但具有不同行为的对象。例如考虑鸟类。有些鸟会飞,有些鸟不会飞。定义一个abstract class Bird强制其所有子类实现fly方法是错误的。

因此,在这种情况下,可以在eat()中将方法定义为sleep()abstract class Bird作为抽象,但不能将fly()定义为抽象,因为并非所有鸟类都可以飞翔。

通常,您将定义一个称为instace Flyable的接口,该接口包含fly()方法的定义,而实现该接口的类必须覆盖该方法的定义。

最后,您将得到如下结果:

public abstract class Bird{
  public abstract void eat();
  public abstract void sleep();
}

public interface Flyable{
  void fly();
}

public class Eagle extends Bird implements Flyable{
 .... has to implement eat(), sleep() and fly()
}

public class Ostrich extends Bird{
... has to implement only eat() and sleep() since ostrich can't fly
}

10-04 21:11