java经典基础题
前言:本题考的是类与对象的关系,static ,类的结构等主要基础知识。
public class Person {
publicString name;
publicint age;
publicString sex;
publicstatic int number =13;
{
name ="小高";
age = 23;
}
public Person(String name) {
this.name = name ;
}
}
class Teacher extends Person {
publicString name;
publicint age;
publicString sex;
publicstatic int number = 13;
public Teacher() {
}
public static void main(String args[]) {
Teacher t = new Teacher();
}
}
从内存的角度分析程序的执行过程。
先复习一下知识点:
1.先有类才有对象。
2.先父类再子类。(在子类对象存在前,一定先有父类对象)
3.在main 方法执行前,静态变量首先进驻内存区。所以,静态成员变量总是先于非静态的成员变量进驻内存。
该题的答案是:第一步:父类静态成员变量进驻内存,接着子类静态成员变量进驻内存.
第二步:父类初始化模块区被执行,接着父类构造器被执行,此时父类被创建.
第三步:子类初始化模块区被执行,接着子类构造器被执行,此时子类被创建.
说明:这段代码有点冗余,java中继承的最大好处就是提高代码的重用性,而这段代码中子类的属性父类都有,所以,子类可以直接使用父类的属性,不需要再写,这也体现出了java 继承性的好处
更多相关文章
- Java:如何创建特定父类型的集合而不是其子类型?
- 环境变量在cron中看不到
- Java-子类和父类的几种关系
- java中的成员变量和局部变量的区别
- 如何在另一个类中使用静态类中的变量?
- JAVA 静态方法和静态变量和final和※静态import※
- Linux(Centos7.X ) 配置Java 环境变量
- java通过映射取得方法对一个类的变量进行赋值
- JavaScript基础——变量、作用域和内存问题