`
JavaSam
  • 浏览: 952019 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

其实我们并不那么懂面向对象思想

    博客分类:
  • JAVA
 
阅读更多

在interface里面的变量默认都是public static final 的。所以可以直接省略修饰符:

String param="ssm";//变量需要初始化

 

为什么接口要规定成员变量必须是public static final的呢?

 

答:

首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的 .假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢?

 

其次,接口中如果可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却无法操作这些变量,虽然可以直接修改这些静态成员变量的值,但所有实现类对应的值都被修改了,这跟抽象类有何区别? 又接口是一种更高层面的抽象,是一种规范、功能定义的声明,所有可变的东西都应该归属到实现类中,这样接口才能起到标准化、规范化的作用。所以接口中的属性必然是final的。

 

最后,接口只是对事物的属性和行为更高层次的抽象 。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则(Open-Closed Principle )的一种体现。

0
0
分享到:
评论

相关推荐

    python新手算法函数思想入门项目,包含几个小项目,没有程序基础可以根据这个开拓思维,会发现算法也挺好玩的,标有注解,一看就懂

    记得,实践是学习编程的最佳途径,动手完成每一个小项目,你会发现自己对Python的理解逐渐加深,也会发现算法其实并不难,甚至还挺有趣的。 总之,"Python新手算法函数思想入门项目"是一个理想的起点,它结合了理论...

    二十三种设计模式【PDF版】

    在真正可复用的面向对象编程中,GoF 的《设计模式》为我们提供了一套可复用的面向对象技术,再配合 Refactoring(重构方法), 所以很少存在简单重复的工作,加上Java 代码的精炼性和面向对象纯洁性(设计模式是 java 的...

    一个月挑战c++ 电子书

     作为一种灵活性高,体系庞大,支持面向对象思想的高级语言,C++的确比其它语言更难学习,很多正在学习它的在校大学生,以及很多正在从事编程工作想自学它的程序员,对于它的入门及各必要知识点掌握苦恼不已。...

    《一个月挑战C++》 chm格式电子书

     作为一种灵活性高,体系庞大,支持面向对象思想的高级语言,C++的确比其它语言更难学习,很多正在学习它的在校大学生,以及很多正在从事编程工作想自学它的程序员,对于它的入门及各必要知识点掌握苦恼不已。...

    学习C++的50条建议

    虽然C++支持面向对象编程,但这并不是C++独有的特点。许多其他语言也支持这一编程范式。 #### 34. 请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码; 手动输入代码可以加深对代码的理解,而不是...

    C++编程开发学习的50条建议

    不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引申出很多知识点。 - **解析**:即使是看似简单的编程问题也可能涉及到复杂的概念和技术。通过解决这些问题,可以深化对语言特性的...

    C 编程开发学习的50条建议

    不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点 - **解析**:即使是简单的编程问题也可能涉及复杂的概念和技术细节。通过解决这些问题,可以加深对语言的理解并扩展...

    自己动手写操作系统(含源代码).part2

    并不是这些书不好,也不是前人的代码不优秀,而是作为一无所知的初学者,我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步维艰的实践细节。 可能在这些教科书作者的眼里,操作的细节不属于课程的一部分,...

    自己动手写操作系统(含源代码).part1

    并不是这些书不好,也不是前人的代码不优秀,而是作为一无所知的初学者,我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步维艰的实践细节。 可能在这些教科书作者的眼里,操作的细节不属于课程的一部分,...

Global site tag (gtag.js) - Google Analytics