【发布时间】:2017-07-09 15:41:12
【问题描述】:
假设我的代码有这样的结构:
public abstract class A{
public abstract Foo methodX();
public abstract Bar methodY();
}
public class B extends A {
public Foo methodX(){
// stuff
}
public Bar methodY(){
// more stuff
}
}
public class C extends A {
public Foo methodX() {
// stuff
}
public Bar methodY(){
// What to do?
}
}
public class D extends C {
public Bar methodY() {
// do stuff
}
}
public class F extends C {
public Bar methodY() {
// do different stuff
}
}
我这样做的原因是因为我有多个classes 扩展A,都有公共方法methodX() 和methodY(),我有多个classes 扩展B 都有一些B的共同属性,但需要有不同的处理方式methodY()和不同的equals/hashcode.
那么,我怎样才能让B 实现唯一的methodX(),但让C 和D 实现methodY() 而不返回null 或在methodY() 中为B 不做任何事情?
【问题讨论】:
-
类
A是唯一的抽象类吗? -
是的,我需要能够初始化其余的类
-
关键是一个类不能在不知道它的所有方法会做什么的情况下被实例化。是否由(非抽象)超级方法、匿名类等提供。
标签: java inheritance methods code-structure