作者swpoker (swpoker)
看板java
标题Re: [问题] 继承与物件使用的问题?
时间Wed May 22 17:43:20 2013
这是python 2.4的写法
class Father(object):
def __init__(self):
self.attr='Father'
pass
pass
class SonA(Father):
sonattr1 = 'sonattr1'
pass
class SonB(Father):
sonbttr1 = 'sonbttr1'
pass
sona = SonA()
sonb = SonB()
print sona.attr,sonb.attr
sona.attr = "sona"
sonb.attr = "sonb"
print sona.attr,sonb.attr
sona.attrA = "_sona.attrA_ !!! "
sonb.attrB = "_sonb.attrB_ **** "
print sona.attrA,sonb.attrB
print sona.sonattr1,sonb.sonbttr1
结果是
Father Father
sona sonb
_sona.attrA_ !!! _sonb.attrB_ ****
sonattr1 sonbttr1
完全符合他的要求
想要怎麽添加指定物件的属性通通都可以
看看sona sonb 这两个物件
可是跟father 有继承的关系喔
可是还是可以自己发展
完全不受老爸的限制
原因为何
因为没有 "宣告" 这种东西
为什麽java得要宣告,然後限制东 限制西的
因为
TIJ
※ 引述《brianhsu (坟墓)》之铭言:
: ※ 引述《brianhsu (坟墓)》之铭言:
: : 我也要来赚 PO 文数……
: 我又重新看了一次原 PO 的问题,发现漏了一个重点:
: 原 PO 你的 Father 到底有没有 ChildA 和 ChildB 都会用到的函式/变数?
: 如果没有的话,代表你这根本不是继承的问题,而是 disjoint data type 的问题,
: 也就是说你想让 obj 可以存『ChildA 或 ChildB』两种类型的物件,而 ChildA 和
: ChildB 彼此根本没有任何关联。
: 这是可以做到,也是合理的,在 Functional Programming 里还常常用,例如一个函
: 式的回传值可能是「正常的结果或 Exception」,但这边的重点是「正常的结果」和
: 「Exception」本身就是两个风马牛不相及的东西,所以你总不会让你的「正常的结果」
: 的物件是继承自 Exception 类别吧?这种情况下一开始就不该用继承来解。
: 如果你是用 Java 的话可以用 Functional Java[1] 里面的 Either<A, B>[2] 这个类
: 别达到类似的目的。
: 写起来的程式码会看起来像下面一样:
: class ClassA { public String strA = "A"; } // 注意两者没有任何继承关系
: class ClassB { public String strB = "B"; }
: public class Main {
: Either<ClassA, ClassB> obj; // obj 是「ClassA 或 ClassB」
: public void functionA() {
: obj = Either.left(new ClassA)
: obj.left().value().strA
: }
: public void functionA() {
: obj = Either.right(new ClassB)
: obj.right().value().strB
: }
: }
: 但相同的,在其他地方你最後还是要检查到底 obj 里是 ChildA 还是 ChildB,
: 你才能知道你到底可以做些什麽事情。
: [1]: http://functionaljava.org/
: [2]: http://0rz.tw/Z61U7
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.29.29.131
1F:推 gmoz:我以为最後面会是BJ4 XD 05/22 17:44
2F:→ swpoker:我只希望不要因此而抛弃JAVA,虽然我现在写python多点 05/22 17:49
3F:推 PsMonkey:===.==== 整篇几乎没有 Java 阿 [指] 05/22 18:22
4F:→ cha122977:python在这问题确实方便 但python也有要特别小心的地方 05/22 22:05
5F:推 a60301:居然是 python !! 05/22 23:55
6F:→ swpoker:请大家相信我可是身在python,心在Java阿 05/23 09:08
7F:→ qrtt1:可是为什麽需要有忠诚度XD 05/23 09:30