scala和java的属性签名与方法签名的思考
这个思考在我接触scala时,就已经产生,这是scala与java的一个语言层上的差别:属性签名和方法签名是同一的。
java:属性签名和方法签名分离;
scala:属性签名和方法签名同一。
分离:
|
同一:
|
对此差别,我是这么认为的:对于每个对象(或类),我们都是在描述其特征,而所有特征在语言层上都可以表现为“属性 = 值(值对象)”。“对象+特征”我们可以理解为“主+谓”,而方法可以理解为“对象能干什么”,明显地“能干什么”是一个谓词,必能成为一个特征,所以val a2 = {1}跟原始方法定义def a4(){1}从意义上是等同的。而且其优点在于同一后,函数式特点便可以加以使用,例如天生的懒加载特性:lazy val a2 = {1},而且“干什么”和“怎么干”很自然分离。
而在一些类属性相同但只是方法不同,而且方法是对象(或类)的特征的情况下,完全可以通过构造函数来同一化,而且更具描述性。
That's all.
[该贴被admin于2012-05-08 06:46修改过]
[该贴被admin于2012-05-08 06:46修改过]