dcp*_*dcp 1 java inheritance abstract-class
假设我有这样的类声明:
public abstract class IdentifiableEntity {
public boolean validate() {
return true;
}
}
public class PreferenceCategory extends IdentifiableEntity {
public boolean validate() {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,假设我创建了PreferenceCategory变量,我想调用IdentifiableEntity.validate()方法,而不是 PreferenceCategory.validate()方法.
我原本以为我可以使用强制转换(见下文),但它仍然调用重写的方法:
PreferenceCategory cat = new PreferenceCategory();
// this calls PreferenceCategory.validate(), not what I want
((IdentifiableEntity)cat).validate();
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
你不能.你最好的办法是添加另一种PreferenceCategory调用super validate()方法的方法.
public boolean validateSuper() {
return super.validate();
}
Run Code Online (Sandbox Code Playgroud)
但是你为什么要这样做呢?这有点设计气味.您可能会发现责任链模式很有趣.
| 归档时间: |
|
| 查看次数: |
5613 次 |
| 最近记录: |