[疑难] 谁能介绍一下D语言面向对象的特性
yntcsb
2009-04-09
最近在学习中发现几乎所有面向对象的语言都有这三个特性:封装、继承、多态。
对D语言中的前两个特性我还能大体明白,但D语言中的多态怎样进行就非常费解了,还请D高手们不要保守。 也许像我一样的初学者也会面临这个问题。 |
|
Colorful
2009-04-09
或许俺的这篇文章 D语言的陷阱 能对你有些帮助。
这篇文章成文比较早(那时 D 1.0 还未正式发布),关于面向对象这三大特性讲的并不是很详细,而且注重"陷阱",呵呵。 其实,多态大概可以分为编译时多态和运行时多态。 编译时多态主要由泛型模板来实现,C++ 0x 的 concept 就是一个很好的编译时多态体现。 运行时多态的范围比较广。最主要的实现机制是虚方法调用和接口继承。 |
|
d2008
2009-04-10
Colorful , 我看了的文章,写得不错,但我觉得C#的 封装、继承、多态, 及命名空间的概念 都要比Java 和D 都要好!
我个人觉得,D 真的要好好向 C# 的这些特性 好好学习学习! |
|
yntcsb
2009-04-19
《D语言的陷阱》一文中提到D语言中默认成员数据和成员函数是public的问题,诚然,如作者所说,对于信息隐藏原则来说,默认为private才合理。但我从 http://www.blueidea.com/tech/program/2004/2171_4.asp 这篇文档里看出,private声明的数据成员和成员函数实现时,每个具体的对象都有一份,而公有成员,也就是用public声明的成员,整个类共享一份,而不是每个具体的对象都有一份。因此,我个人认为,D语言出于优化的目的,设默认的特征声明为public也是可以理解的,关键在于我们使用的习惯,如果确实需要隐藏的信息,记着加上private声明也就行了。不同的理念,适应了就好。 |
|
oldrev
2009-04-19
C#最大的创新在 Attribute
|
|
d2008
2009-05-05
yntcsb 写道
《D语言的陷阱》一文中提到D语言中默认成员数据和成员函数是public的问题,诚然,如作者所说,对于信息隐藏原则来说,默认为private才合理。但我从 http://www.blueidea.com/tech/program/2004/2171_4.asp 这篇文档里看出,private声明的数据成员和成员函数实现时,每个具体的对象都有一份,而公有成员,也就是用public声明的成员,整个类共享一份,而不是每个具体的对象都有一份。因此,我个人认为,D语言出于优化的目的,设默认的特征声明为public也是可以理解的,关键在于我们使用的习惯,如果确实需要隐藏的信息,记着加上private声明也就行了。不同的理念,适应了就好。
应该这样理解:
有static声明的成员,倒更符合“公有”这个词,因为它是所有的类实例 共用一份 的,所以称它为“公有成员”或“公共成员”来得恰当。在D语言中可以用类本身或类实例去访问(C#只能用类本身去访问)。 |