1. 静态变量的初始化
输出结果为-2.8和17.2
2. 访问子类对象
public class Base {
private int i = 2;
public Base() {
System.out.println(this.i);// 2
this.display();// 0
System.out.println(this.getClass());// Derived
// this的编译类型是Base,无法调用子类的sub()方法
// this.sub();
}
public void display() {
System.out.println(i);
}
}
Java对象是由构造器构造的吗?实际上,构造器只是负责对Java对象实例变量执行赋值,在执行构造器之前,该对象所占的内存已经被分配出来了。
由于实例变量经过编译后会被提取到构造器中,故Base的构造器的第一行代码其实为 i=2;
(在下面第4点里面有解释)
3. 调用被子类重写的方法
4. 继承成员变量与继承方法的区别
5. final “宏变量”
在上面第1点中,若将staitc double initPrice用final修饰,两处都会输出17.2:
再看一个例子
将str1、str2用final修饰即可
注:以上内容摘自《疯狂java程序员的基本修养-李刚》