本文顺接上一篇文章
如果一个类继承自一个类,这个类的含有成员变量并且赋初值
则:成员变量在声明后先会赋默认值,父类构造方法执行完毕之后再执行赋初值。
成员对应的默认值
| 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);
}
}
本文深入解析了Java中类继承与构造方法执行的顺序,通过实例代码演示了成员变量默认值及初始化过程。

722

被折叠的 条评论
为什么被折叠?



