前言:本题考的是类与对象的关系,static ,类的结构等主要基础知识。
public class Person {
public String name;
public int age;
public String sex;
public static int number =13;
{
name ="小高";
age = 23;
}
public Person(String name) {
this.name = name ;
}
}
class Teacher extends Person {
public String name;
public int age;
public String sex;
public static int number = 13;
public Teacher() {
}
public static void main(String args[]) {
Teacher t = new Teacher();
}
}
从内存的角度分析程序的执行过程。
先复习一下知识点:
1.先有类才有对象。
2.先父类再子类。(在子类对象存在前,一定先有父类对象)
3.在main 方法执行前,静态变量首先进驻内存区。所以,静态成员变量总是先于非静态的成员变量进驻内存。
该题的答案是:第一步:父类静态成员变量进驻内存,接着子类静态成员变量进驻内存.
第二步:父类初始化模块区被执行,接着父类构造器被执行,此时父类被创建.
第三步:子类初始化模块区被执行,接着子类构造器被执行,此时子类被创建.
说明:这段代码有点冗余,java中继承的最大好处就是提高代码的重用性,而这段代码中子类的属性父类都有,所以,子类可以直接使用父类的属性,不需要再写,这也体现出了java 继承性的好处