Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扩展多个类的解决方案_Java_Inheritance_Interface_Extends - Fatal编程技术网

Java 扩展多个类的解决方案

Java 扩展多个类的解决方案,java,inheritance,interface,extends,Java,Inheritance,Interface,Extends,假设我有A类和B类,除了使用颜色变量外,它们是不同的。 这两个类都已经扩展了JPanel类,因此我无法扩展包含颜色变量的新类。然后我想我可以使C类(带有颜色)成为一个接口。但是它不允许在接口中有属性 你知道我如何在A+B两个类的外部类中仍然使用颜色吗 思想: A类-使用颜色 B类-使用颜色 C类-有颜色 public interface C { public static final Color c1 = Color.RED; public static final Color c2 =

假设我有A类和B类,除了使用颜色变量外,它们是不同的。 这两个类都已经扩展了JPanel类,因此我无法扩展包含颜色变量的新类。然后我想我可以使C类(带有颜色)成为一个接口。但是它不允许在接口中有属性

你知道我如何在A+B两个类的外部类中仍然使用颜色吗

思想:

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

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在评论中所指出的,您的
颜色将是。

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

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

现在让A和B实现这个类,这样就可以了。

请注意,接口中的字段将被标记为
static final
,因此不会在实现接口的类的实例之间共享。因此允许在接口中使用static final变量:d在C中定义颜色并在C中创建一个getColor方法,该方法返回颜色您可以拥有一个从
JPanel
扩展而来的类
Z
,并且只添加一个
C chastColor
字段,然后类
A
B
可以从
Z
扩展而来,拥有
JPanel
和其中的
C
字段的所有功能(当然,如果这是您想要的)。如果您将类A和B设为通用类呢?在运行时,您会将想要的颜色传递给它们。您确定这是允许的吗?如果我错了,请告诉我,但有人告诉我,你只能在接口中使用未实现的方法。这些是
publicstaticfinal
变量,而不是方法。我想这就是你想要的。