积极答复者
纯面向对象理论讨论,下面这段代码有没有错?

问题
答案
-
你完全可以这样改:
1)提取A,B的公共类C弄成一个抽象类,然后分别让A和B继承这个类(这样,A和B分别可以添加自己独特的行为)。
2)把A作为引用而非继承,譬如:
public class A { public void f1(){} } public class b { private A a = new A(); public void f2() { a.f1(); //这里是f2自己的方法…… } }
不建议直接从一个类直接继承另外一个类,一般考虑引用而非直接继承。
不过从NET3.5开始,你或许可以考虑扩展方法:
public static class ExtendB { public static void FunB(this B b) { ……………… } } //你这样做 B b = new B(); b.FunB();
关于扩展方法,你可以参考:
http://msdn.microsoft.com/zh-cn/library/bb383977.aspx
- 已标记为答案 Youen ZenModerator 2012年12月4日 7:07
-
dear
当然可以添加行为。
我所理解的里氏替换原则,是指父类能出现的地方,子类就可以出现;反之,子类能出现的地方,父类未必能适应,因子类已经实作父类的属性和方法,可能也扩充了父类所没有的功能。
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
- 已标记为答案 Youen ZenModerator 2012年12月4日 7:07
全部回复
-
你完全可以这样改:
1)提取A,B的公共类C弄成一个抽象类,然后分别让A和B继承这个类(这样,A和B分别可以添加自己独特的行为)。
2)把A作为引用而非继承,譬如:
public class A { public void f1(){} } public class b { private A a = new A(); public void f2() { a.f1(); //这里是f2自己的方法…… } }
不建议直接从一个类直接继承另外一个类,一般考虑引用而非直接继承。
不过从NET3.5开始,你或许可以考虑扩展方法:
public static class ExtendB { public static void FunB(this B b) { ……………… } } //你这样做 B b = new B(); b.FunB();
关于扩展方法,你可以参考:
http://msdn.microsoft.com/zh-cn/library/bb383977.aspx
- 已标记为答案 Youen ZenModerator 2012年12月4日 7:07
-
dear
当然可以添加行为。
我所理解的里氏替换原则,是指父类能出现的地方,子类就可以出现;反之,子类能出现的地方,父类未必能适应,因子类已经实作父类的属性和方法,可能也扩充了父类所没有的功能。
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
- 已标记为答案 Youen ZenModerator 2012年12月4日 7:07