rma*_*nie 14 java abstract-class 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;
}
}
Run Code Online (Sandbox Code Playgroud)
所以打破..
有没有办法将getName的代码放在一个地方,每个类都有自己的名称变量?
有没有办法使getName静态,所以我不必创建一个新的实例
有更好的想法吗?
Anu*_*oob 12
使用抽象类并初始化构造函数中的字段:
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";
}
}
Run Code Online (Sandbox Code Playgroud)
JB Nizlet指出,做这样的事情会更干净:
public abstract class Foo {
protected String name;
public Foo(String newName) {
name = newName;
}
String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用super("foo name 1")子类.
正如@Peter Lawrey所说,如果您已经有一个界面或者出于其他原因需要一个界面:
public interface IFoo {
String getName();
}
public abstract class Foo implements IFoo {
protected String name;
String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)