作者henry4343 (henry)
看板java
标题Re: [问题] 继承与物件使用的问题?
时间Tue May 21 23:43:55 2013
前文恕删
抱歉可能我的观念错很大
我直接用code来说好了
public Class Father {
}
public Class Child_A extends Father {
public String string_A;
}
public Class Child_B extends Father {
public ArrayList<String> arrayList_B;
}
//这边执行
public Class Main {
private Father obj;
private void function_A {
obj = new Child_A;
obj.string_A //这行认不到
}
private void function_B {
obj = new Child_B;
obj.arrayList_B //这行认不到
}
}
程式到此为止 一开始我的想法是Child_A和Child_B有些相同的东西,有些不同的东西
所以又建立了一个Class Father来让他们继承,这样相同的东西写在Class Father,
不同的东西写在各自的Class,我想说那这样我只要一个Father obj的变数,
然後看我要用哪个Class的物件就new那个Class
结果这麽做以後我才发现完全不能这样用…才会产生这种疑虑
如果我直接写成下面这样
public Class Main {
Child_A a;
Child_B b;
private void function_A {
a = new Child_A;
a.string_A //OK
}
private void function_B {
b = new Child_B;
b.arrayList_B //OK
}
}
就没什麽问题,但这就有违我一开始的想法
其实我只是想要偷懒而已,因为如果还有Child_C,D,E,F我就要宣告好多变数)
看了大大们的解说,也许我一开始使用继承的想法就不太对的样子,
可能我的观念还不是很清楚,所以一时间也还想不到更好更方便的管理方法。
也感谢回文的大大提供了很多帮助。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.97.175
1F:推 coolcomm:一定要用宣告成 field 吗? 为什麽不直接用区域变数? 05/21 23:59
2F:→ henry4343:宣告成区域变数就不能再其他function内使用了 05/22 00:08
3F:推 qrtt1:这麽想肯定是 bad smell 且不符合单一责任原则。 05/22 00:11
4F:→ PsMonkey:懒要懒的有道理,你这样等於要男人生孩子要女人长喉结 05/22 00:18
5F:→ qrtt1:精确地说,你需要的是 c 的 struct/union 的混合物罢了。 05/22 00:22
6F:→ coolcomm:原po可以稍微解释一下拿到string_A/arrayList_B之後要做 05/22 00:30
7F:→ coolcomm:什麽吗? 05/22 00:31
8F:→ henry4343:String_A/arrayList_B只是用来比喻object而已 05/22 09:26
9F:推 tails32100:推猴大的比喻。提一下为何会需要这麽做的原因会更好, 05/22 10:00
10F:→ tails32100:也许会有更适合的解法。 05/22 10:01
11F:→ swpoker:TIJ !! 别的语言就没有这种问题了 python ruby php.... 05/22 11:49