Java与c#的抽象类与接口

        这里主要针对它们的一些特性以及理解性方面的东西进行一番探讨。

        首先是抽象类。含有抽象方法的类叫做抽象类,但抽象类里不一定存在抽象方法。在Java和c#里面,都是这样做的。抽象类不能直接被实例化(需要通过子类实例),这是抽象类的最主要特性。除此特性以外,不含抽象方法的抽象类跟普通类没有分别(等待大家来推翻)。而且我认为,不含抽象方法的抽象类的存在没有任何意义。因为,既然不含抽象方法,该类也就做好了被实例化的准备。你再把它声明为抽象类,就显得有些不厚道了。

        本人以为,Java和c#在这方面做的都不够好。语法规则等就相当于法律,就应该严谨,不应该容易让人混淆。所以,本人强烈要求,把抽象类的规则定为:含有抽象方法的类叫做抽象类,抽象类里一定存在抽象方法。

        其次是接口。我对它的理解是只含抽象方法(域不在讨论范围之内)的类。这样的类有很特别的用途。我们可以把它看成一组协议(protocal),对类进行约束控制。Java和c#把它单独拿了出来,定义为接口。我觉得这样做非常好。

        但是有一点,我认为c#做得不够好,在接口里写抽象方法时不允许用public声明(虽然默认就是public),但是我认为,一些规则还是一致的好。要是你这里特别点,那里再特别点,一来对语言标准化不利,二来受罪的还是我们程序员。到时候我们就该想了,要不要学你呢?虽说你微软是大腕,但是没有我们的支持,你的前景不会很乐观。(扯远了,今天就扯到这里吧)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15149306/viewspace-426874/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15149306/viewspace-426874/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值