java - 如何以某种方式实例化部分实现接口(interface)的类

标签 java oop

假设我有一个界面 IBird 。它有很多方法如 eat() , walk() , run()fly() .

如果是基类Ostrich想要实现IBird ,那该怎么办呢?因为Ostrich不会飞,但可以做IBird中的所有其他事情。

最佳答案

你可以制作Ostrich 抽象。这在某些情况下可能有效,但在这里不行,因为 Ostrich 的每个实例都必须实现缺少的功能。

正如Johny 指出的那样,另一种选择是抛出UnsupportedOperationException。但这可能会导致意外崩溃,这对用户不利。

第三种方法是从接口(interface) IBird 中删除方法 fly(),只保留所有鸟共享的内容。然后,您创建另一个扩展 IBird 的接口(interface) IBirdThatCanFly。然后您可以添加缺少的 fly() 方法。

public interface IBird { //all birds
    public void eat();
    public void walk();
    public void run();
}

public interface IBirdThatCanFly extends IBird { //birds that can fly
    public void fly();
}

public class Ostrich implements IBird { //Ostrich can't fly
    public void eat() { ... }
    public void walk() { ... }
    public void run() { ... }
}

关于java - 如何以某种方式实例化部分实现接口(interface)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641807/

相关文章:

java - Tomcat Web 应用程序更改部署目录

javascript - 如何扩展正则表达式对象

php - 将值从数组传递到对象? - PHP

java - 继承和类型转换 : is this good java?

java - 如何实现对象访问其他类对象的思想?

java - @Column 或 @Basic JPA 注释在 spring-data-jpa 模式创建中被忽略

java - 如何使用 graphql-java 从请求 header 设置上下文

java - Gradle:无法创建 AppPlugin 类型的插件

java - 如何为 Android Studio 循环创建按钮删除 View

java - java中通过String创建对象