这里主要针对它们的一些特性以及理解性方面的东西进行一番探讨。
首先是抽象类。含有抽象方法的类叫做抽象类,但抽象类里不一定存在抽象方法。在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/