【问题标题】:Solution to extend multiple classes扩展多个类的解决方案
【发布时间】:2013-06-19 14:18:45
【问题描述】:

假设我有不同的 A 类和 B 类,除了使用颜色变量。 这两个类已经扩展了 JPanel 类,所以我不能扩展一个包含颜色变量的新类。然后我想我可以让 C 类(里面有颜色)成为一个接口。但是接口中不允许有属性。

知道如何在外部类中为 A + B 类使用颜色吗?

想法:

A 类 - 使用颜色
B 类 - 使用颜色
C 类 - 有颜色。

【问题讨论】:

  • 在 C 中定义颜色并在 c 中创建一个返回颜色的 getColor 方法
  • 你可以有一个类ZJPanel扩展并且只添加一个C cHasTheColors字段,然后类AB可以从Z扩展拥有所有的权力JPanel 和其中的 C 字段(当然,如果这是你想要的)。
  • 如果将 A 类和 B 类设为泛型会怎样?在运行时,您将所需的颜色传递给它们。

标签: java inheritance interface extends


【解决方案1】:

您始终可以使用接口来存储常量。

public interface C{
    Color a;
    Color b; 
    //And so on
}

现在让 A 和 B 实现这个类,应该这样做。

【讨论】:

  • 你确定这是允许的吗?如果我错了,请告诉我,但有人告诉我你只能在接口中使用未实现的方法。
  • 嗯,这些是public static final 变量,而不是方法。我想这就是你想要的。
【解决方案2】:
public interface C {
  public static final Color c1 = Color.RED;
  public static final Color c2 = Color.GREEN;
  public static final Color c3 = Color.BLUE;
}

public class A extends JPanel implements C {
    /* ... */
}

public class B extends JPanel implements C {
    /* ... */
}

编辑:正如 Luiggi Mendoza 的评论中所述,您的 Colors 将是 have to be static and final

【讨论】:

  • 请注意,接口中的字段将被标记为static final,因此不会在实现该接口的类的实例之间共享​​>。
  • 所以允许在接口中有静态最终变量? :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 2018-10-22
  • 1970-01-01
  • 2015-09-06
  • 2013-01-18
相关资源
最近更新 更多