本文顺接上一篇文章
如果一个类继承自一个类,这个类的含有成员变量并且赋初值
则:成员变量在声明后先会赋默认值,父类构造方法执行完毕之后再执行赋初值。
成员对应的默认值
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
char | 空格 |
boolean | false |
看代码吧,虽然喜欢看总结好的文字,要真正的理解还是要靠代码
public class Main
{
public static void main(String[] args)
{
Parent parent = new Child();
Child child = new Child();
// parent向上转型,引用Parent中的变量。
System.out.println("parent + child = " + (parent.pi + child.pi));// 注意要括号起来,否则隐式转换为String类型
}
}
class Parent
{
int pi = 5;
public Parent()
{
show();
}
public void show()
{
System.out.println("Parent.show" + pi);
}
}
class Child extends Parent
{
int i = 10;
int pi = 50; // 当父类
{
i++;
// j++; Cannot reference a field before it is defined,级别相同,有先后顺序
System.out.println("构造代码块:" + i);
}
int j =0;
public Child()
{
// super();// i == 0;当调用父类的构造方法的时候,变量i赋值为默认值
// 父类构造方法执行完毕开始执行成员属性赋值,构造方法块
show();
}
public void show()
{
i++;
System.out.println("Child.show" + i);
System.out.println("Child.show" + pi);
}
}