【发布时间】:2019-03-22 23:11:00
【问题描述】:
假设我有两个班级。
public class Banana extends Fruit{
public Banana() {
this.setTitle("Banana");
this.setSize("Medium");
this.setState("Rotten");
}
}
public class Sausage extends Meat{
public Sausage() {
this.setTitle("Sausage");
this.setSize("Medium");
this.setState("Rotten");
}
}
有没有办法引入一个可以保存通用设置的接口(可能使用默认方法)?两个原始扩展都应保留。
我在谷歌上搜索了大约一个小时的接口和默认方法,并在 Java 聊天服务器上询问了这个问题,但我仍然感到困惑。
【问题讨论】:
-
接口没有实例字段。他们不能保持状态。
-
首先你需要有一个被其他人扩展的通用类。除非 Fruit 和 Meat 在某个共同的地方相遇,否则您无法保留共同的设置。
-
如果我有一个共同的课程,这将不再是一个有趣的问题。为了科学起见,让我们假设他们没有。我还能用接口和默认情况完成任何事情吗?
-
您不能直接执行此操作。 我认为您在这里基本上要求的是多重继承,而这个概念似乎给 Java 语言设计者带来了严重的轻率。你可以自己实现类似的东西。
-
@markspace 提供的类如何实现的任何示例?