A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Xia_ 中级黑马   /  2015-7-26 22:37  /  639 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么接口中只能有常量?
接口中不允许方法的实现,而抽象类是允许方法实现的及定义变量的,因此我们可以看出接口是比抽象类更高层次的抽象。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为(例如set()方法)来修改属性。那么有些人就会提出可以通过实现接口的类的实例来修改接口的属性。那好,如果接口中有一变量c,我们通过实现它的A类对象改变了c的值,那么实现接口的B类,C类中的c变量都要跟着改变,可想而知这样就会造成混乱,很多想要实现接口的类就不知道接口里现在c变量到底是什么值,因为接口是在变的,它不再是那种高层的抽象,而是带了可变的成分。所谓的抽象就是把一些不可变的东西放在一起,而可变的东西往往放在实现里面。
    所以我们深思接口的本意所在,实际上它是对一类事物属性和行为的高层次抽象,它体现的是OCP(对修改关闭,对扩展开放)原则,这也是我们软件开发中一直所追求。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马