rsp*_*rsp 92
您可以通过在抽象类中使用在其构造函数中初始化的最终字段(未经测试的代码)来执行您所描述的操作:
abstract class Base {
final String errMsg;
Base(String msg) {
errMsg = msg;
}
abstract String doSomething();
}
class Sub extends Base {
Sub() {
super("Sub message");
}
String doSomething() {
return errMsg + " from something";
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的子类"忘记"通过超级构造函数初始化final,编译器将发出错误警告,就像未实现抽象方法时一样.
我认为没有任何意义.您可以将该函数移动到抽象类,只需覆盖一些受保护的字段.我不知道这是否适用于常量,但效果是一样的:
public abstract class Abstract {
protected String errorMsg = "";
public String getErrMsg() {
return this.errorMsg;
}
}
public class Foo extends Abstract {
public Foo() {
this.errorMsg = "Foo";
}
}
public class Bar extends Abstract {
public Bar() {
this.errorMsg = "Bar";
}
}
Run Code Online (Sandbox Code Playgroud)
所以你的观点是你要强制实现/覆盖/ errorMsg
子类中的任何东西?我以为你只是想在基类中使用该方法,然后不知道如何处理该字段.
归档时间: |
|
查看次数: |
52704 次 |
最近记录: |