【问题标题】:What type is a class if it implements more than other class in Java?如果类在 Java 中实现的比其他类更多,那么它是什么类型?
【发布时间】:2016-01-23 11:45:51
【问题描述】:

如果一个类实现了多个接口,它的类型是什么?

例如,如果类Example 实现Interface1 是否Example 变成Interface1 类型?如果是这样,如果它也实现了Interface2,会发生什么。那么Example 类是什么类型呢?

【问题讨论】:

  • 你不能在Java中实现甚至扩展String、Integer
  • 抱歉,我已将其更改为实现两个单独的接口。那会是什么?谢谢

标签: java inheritance multiple-inheritance


【解决方案1】:

短语“成为 interface1 类型”不清楚。

在 OO 设计中,一个类应该代表您的问题域中的特定“对象”或“事物”。如果您正在编写一个系统来模拟高速公路上的车辆,您可能有“车辆”、“道路”等的类(或接口)。

假设系统的一部分也处理商用车;税什么的。因此可能存在一个“车辆”类和一个“CommercialVehicle”接口,后者提供了获取与车辆的道路税相关的属性的方法。并非所有车辆都是 CommercialVehicles,但其中一些会实现该接口。

Vehicle 类型的对象可能会也可能不会实现该接口。如果它确实实现了接口,则保证它具有关联的方法。您可以使用“instanceof”运算符来确定特定对象是否实现了接口。

但我不确定你所说的“成为类型接口”是什么意思,所以我不知道如何回答这个问题。

【讨论】:

    【解决方案2】:

    Implementing 用于接口。 Extending 用于上课。
    在 Java 中,您可以实现许多接口,但只能扩展一个。

    如果你扩展一个类,你不会变成任何东西,但你确实继承了它的成员(字段、方法、子类)。

    根据您的(模糊)问题,我们假设:

    public interface Interface1 {
        void myMethod(Interface1 other); // using public is redundant in interfaces
    }
    
    public class Example implements Interface1, Interface2 { ... }
    

    那么Example的类型是Example(...),当我需要实现接口中的方法时:

    public void myMethod(Interface1 myObject) {
        Example myClass = (Example)myObject;
    }
    

    我需要cast 才能使用Example 中的方法。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 2014-06-09
      • 2020-04-22
      • 1970-01-01
      相关资源
      最近更新 更多