摘要:
执行结果如下: static Insect.x1 initialized static Beetle.x2 initialized Beetle constructor i = 9, j = 0 Beetle.k initialized k = 63 j = 39 执行顺序总结: 1、父类静态字段 阅读全文
摘要:
如果说整个类都是final(在它的定义前冠以final关键字),就表明自己不希望从这个类继承,或者不允许其他任何人采取这种操作。换言之,出于这样或那样的原因,我们的类肯定不需要进行任何改变;或者出于安全方面的理由,我们不希望进行子类化(子类处理)。除此以外,我们或许还考虑到执行效率的问题,并想确保涉 阅读全文
摘要:
之所以要使用final方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。 采用final方法的第二个理由是程序执行的效率。将一个方法设成final后,编译器就可以把 阅读全文
摘要:
Java 1.1 允许我们将自变量设成final 属性,方法是在自变量列表中对它们进行适当的声明。这意味着在一个方法的内部,我们不能改变自变量句柄指向的东西。如下所示: 阅读全文
摘要:
Java 1.1允许我们创建“空白final”,它们属于一些特殊的字段。尽管被申明为final,但却未得到一个初始值。 无论在哪种情况下,空白final都必须在实际使用前得到正确的初始化(Blank finals MUST be initialized in the constructor)。而且, 阅读全文
摘要:
许多程序设计语言都有自己的办法告诉编译器某个数据是“常数”。常数主要应用于下述两个方面: 1)编译期常数,它永远不会改变; 2)在运行期间初始化的一个值,我们不希望它发生变化。 对于编译期的常数,编译器(程序)可将常数值“封装”到需要的计算过程里。也就是说,计算可在编译期间提前执行,从而节省运行时的 阅读全文
摘要:
如果Java基础类有一个方法名被“过载”使用多次,在衍生类里对那个方法名的重新定义就不会隐藏任何基础类的版本。所以无论方法在这一级还是在一个基础类中定义,过载都会生效。 阅读全文