这是一个关于继承应该如何使用的简单问题。继承:使用基类或派生类来做东西
考虑到我必须提供业务逻辑来打印'foo'和'bar',并且我有两个类的层次结构:一个只有'foo'打印方法,另一个先打印'并且有方法打印'酒吧'。 在这两个类中,我都有一个名为necessaryMethod()
的方法,它负责调用打印'foo'和'bar'的方法。
的方式我实现它在两种方法:
第一种方法是让基类做一些东西和派生类利用它的优势。第二种方法是让基类不做任何事情(只提供实现)并将所有责任都放在派生类上。
考虑下面的代码:
方法1:
public class A{
protected void necessaryMethod(){
callFoo();
}
protected void callFoo(){
System.out.pritln("foo");
}
}
public class B extends A{
@Override
protected void necessaryMethod(){
super.necessaryMethod();
callBar();
}
protected void callBar(){
System.out.println("bar");
}
}
public class FooBarClass{
public static void main(String args[]){
B b = new B();
b.necessaryMethod();
}
}
方法2:
public abstract class A{
protected abstract void necessaryMethod();
protected void callFoo(){
System.out.pritln("foo");
}
}
public class B extends A{
@Override
protected void necessaryMethod(){
calFoo();
callBar();
}
protected void callBar(){
System.out.println("bar");
}
}
public class FooBarClass{
public static void main(String args[]){
B b = new B();
b.necessaryMethod();
}
}
哪种方法将是可维护性和代码的可读性(不错在大型软件产品/大类层次结构的背景下;这一点只是一个例子)?
(这是一个通用的编程问题,我并没有要求的意见。)
这个问题在http://codereview.stackexchange.com/上更合适。 – jaco0646
@ jaco0646如何迁移问题? –