12/29/2008

[閒閒沒事幹0002]繼承的汎生問題

從之前的繼承範例來看..
可以看出繼承雖然可以帶來reuse的特性..
但他同樣發生了一些不合理的情況..
在這個情況下..
第一個解決要訣:要將容易變動的地方抽離出來..
從該範例來看,目前變動區域為:
public void getName(String name){
System.out.println(name);
}

如果說能將其讓getName()獨立出來的話..
就可以避免Info類別再次被修改..
也變的更有彈性..

12/28/2008

[閒閒沒事幹0001]OOP的繼承..!

這是一個基礎的教學..
一般OOP的繼承可以達到重複性利用的特性..
以一個範例來看:
public class Info{
public void getName(String name){
System.out.println(name);
}
public void getInfo(){
System.out.println("This is a information!");
}
}

class Main extends Info{
public static void main(String args[]){
Main main=new Main();
main.getInfo();
main.getName("Main");
}
}

以一個上述範例來看..
這樣作便可達到重複利用的特性...
不過繼承必須要適時的情況下用...
上述範例並不是一個很好的應用..
因為他可能汎生的問題如下
public class PartInfo extends Info{

}
對PartInfo而言..
他只是想要取得getInfo()..
很可惜的..
getName()的方法對PartInfo而言也必須強迫繼承..
如果說從Info再另行修改以可能會造成牽一髮動全身的嚴重後果..
因此對整個軟體設計而言..
這是不得不去注意的...