dmz*_*rsk 9 java inheritance final protected
作为一个(迂腐的)初学Java程序员,我想知道,将所有子类使用的公共代码块移动到父类中的单独的受保护(最终)方法是一种好习惯吗?使用常用值填充列表或常用过滤算法等任务...是否也可以使用受保护的静态方法?
class A {
protected final List<String> getVariants() {...}
protected final List<String> filterResults(List<String> variants) {...}
}
class B extends A {
public List<String> doSomethingUsefull() {
List<String> commonVariants = getVariants();
...
return filterResults(commonVariants);
}
}
class C extends A {
public void doSomethingUsefull() {
List<String> commonVariants = getVariants();
...
return filterResults(commonVariants);
}
public void doMoreUsefullThings() {
List<String> commonVariants = getVariants();
...
return filterResults(commonVariants);
}
}
Run Code Online (Sandbox Code Playgroud)
jto*_*ron 21
如果您是Java初学者,并且您正在考虑这些事情,那么现在是阅读"有效Java"一书中第4章"类和接口"的好时机.那里的信息将比你在这里获得的答案更加彻底和细致.
下面就来想想混合的一种方式final,protected和static关键字:
static因为它打破了OO范式.final关键字也可以防止子类覆盖方法.在这方面,结果与之相同static.final应该更频繁地使用,并且与它一起使用是个好主意protected.参见"Effective Java"中的第17项.protected并且static不经常一起使用.你将OO构造与一个破坏正常OO行为的构造混合,因此组合是奇数.| 归档时间: |
|
| 查看次数: |
15867 次 |
| 最近记录: |