java 属性签名_scala和java的属性签名与方法签名的思考

其实这样的思考还可以影响到接口思维。

接口(Interface)是我们一向认为Java技术的核心,是产生边界的有效技术。可以说,当真正懂得边界思维时,会很自然地优先使用接口,因为接口是对方法的声明。

那么在Java中接口这种方式是否存在某种问题?我认为有二:

一、接口声明跟属性声明相异处理。接口是要表达“做什么”(若果用“特征”的思维,则可以理解为“是什么”),是一种声明,跟属性的声明是同一作用,但Java这种方式却把两种声明放在不同地方。

有这么一种情况:对象存在一个public的属性,而我的确想对外声明,在Java中,我们不得不要通过方法再获得这属性,因为接口不能声明属性。而另外地,方法内容硬性绑定的,为了不同的实现却要建立多个类,所以过多的类问题由此诞生。当然,这不是在批评Java,而是提出Java这方式略显累赘,相同的声明意义却要不等价地独立处理。

二、跟抽象类(abstract class)功能出现重叠情况。当然这跟当时的语言设计有关,可以从网上找到她们各自的作用和相异之处,但我觉得那是不够说服力的。任何的接口都可以用抽象类来代替,而他们都是同一作用:对外进行声明(,对内要求实现)。若果当时Java就引入函数式思维来设计,可能就会跟现在scala极为相似。

从语言层面说,边界声明能力scala更切理。毕竟其吸收了函数式的逻辑性,更具学术意味。

当然Java也可以通过Method类和抽象类来实现上面的思想,只是有点重罢了。

说出这两个问题后,scala如何实现Java的原来目的呢?

第一个就是特征思维,这就不多说了;

第二个是去掉Interface。很多人都认为trait是代替Java的Interface,其实我认为这是错误理解的。去掉Interface是因为,方法声明已与属性声明同一,已经没必要存在。而trait只是一种Mixin技术,而非Interface的代替,这两者原理和意义是相异的。

[该贴被SpeedVan于2012-05-07 17:40修改过]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值