在interface里面的变量默认都是public static final 的。所以可以直接省略修饰符:
String param="ssm";//变量需要初始化
为什么接口要规定成员变量必须是public static final的呢?
答:
首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的 .假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢?
其次,接口中如果可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却无法操作这些变量,虽然可以直接修改这些静态成员变量的值,但所有实现类对应的值都被修改了,这跟抽象类有何区别? 又接口是一种更高层面的抽象,是一种规范、功能定义的声明,所有可变的东西都应该归属到实现类中,这样接口才能起到标准化、规范化的作用。所以接口中的属性必然是final的。
最后,接口只是对事物的属性和行为更高层次的抽象 。对修改关闭,对扩展(不同的实现implements)开放,接口是对开闭原则(Open-Closed Principle )的一种体现。
相关推荐
记得,实践是学习编程的最佳途径,动手完成每一个小项目,你会发现自己对Python的理解逐渐加深,也会发现算法其实并不难,甚至还挺有趣的。 总之,"Python新手算法函数思想入门项目"是一个理想的起点,它结合了理论...
在真正可复用的面向对象编程中,GoF 的《设计模式》为我们提供了一套可复用的面向对象技术,再配合 Refactoring(重构方法), 所以很少存在简单重复的工作,加上Java 代码的精炼性和面向对象纯洁性(设计模式是 java 的...
作为一种灵活性高,体系庞大,支持面向对象思想的高级语言,C++的确比其它语言更难学习,很多正在学习它的在校大学生,以及很多正在从事编程工作想自学它的程序员,对于它的入门及各必要知识点掌握苦恼不已。...
作为一种灵活性高,体系庞大,支持面向对象思想的高级语言,C++的确比其它语言更难学习,很多正在学习它的在校大学生,以及很多正在从事编程工作想自学它的程序员,对于它的入门及各必要知识点掌握苦恼不已。...
虽然C++支持面向对象编程,但这并不是C++独有的特点。许多其他语言也支持这一编程范式。 #### 34. 请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码; 手动输入代码可以加深对代码的理解,而不是...
不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引申出很多知识点。 - **解析**:即使是看似简单的编程问题也可能涉及到复杂的概念和技术。通过解决这些问题,可以深化对语言特性的...
不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点 - **解析**:即使是简单的编程问题也可能涉及复杂的概念和技术细节。通过解决这些问题,可以加深对语言的理解并扩展...
并不是这些书不好,也不是前人的代码不优秀,而是作为一无所知的初学者,我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步维艰的实践细节。 可能在这些教科书作者的眼里,操作的细节不属于课程的一部分,...
并不是这些书不好,也不是前人的代码不优秀,而是作为一无所知的初学者,我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步维艰的实践细节。 可能在这些教科书作者的眼里,操作的细节不属于课程的一部分,...