這是一個關於繼承應該如何使用的簡單問題。繼承:使用基類或派生類來做東西
考慮到我必須提供業務邏輯來打印'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如何遷移問題? –