抱歉,我真的不知道如何给问题起标题,这就是问题所在......
我有一个接口(interface)和多个实现该接口(interface)的类。接口(interface)中的某些方法的实现在每个实现类中都是完全相同的。我觉得应该有一种方法可以简化它,这样我就不必每次都编写相同的代码。示例:
public interface Foo {
String getName();
}
public class FooImpl1 implements Foo {
private String name = "foo name1";
public String getName() {
return name;
}
}
public class FooImpl2 implements Foo {
private String name = "foo name2";
public String getName() {
return name;
}
}
所以要分解..
有没有办法将 getName 的代码放在一个地方,并且每个类都有自己的名称变量?
有没有办法让 getName 静态化,这样我就不必创建新实例了
有更好的想法?
最佳答案
使用抽象类并在构造函数中初始化字段:
public abstract class Foo {
protected String name;
String getName() {
return name;
}
}
public class FooImpl1 extends Foo {
public FooImpl1 () {
name = "foo name1";
}
}
public class FooImpl2 extends Foo {
public FooImpl1 () {
name = "foo name2";
}
}
JB Nizlet指出做这样的事情会更干净:
public abstract class Foo {
protected String name;
public Foo(String newName) {
name = newName;
}
String getName() {
return name;
}
}
然后在子类中调用super("foo name 1")
。
作为@Peter Lawrey说,如果你已经有一个界面或出于其他原因想要一个界面:
public interface IFoo {
String getName();
}
public abstract class Foo implements IFoo {
protected String name;
String getName() {
return name;
}
}
关于java - 实现相同接口(interface)的多个类的相同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596352/