父类子类之间的一个经典题目(有关成员变量何时赋值和在哪里赋值的问题)
来源:互联网 发布:手机淘宝怎么看优惠券 编辑:程序博客网 时间:2024/04/30 13:12
父类:
package cn.edu.lstc.extend;public class Base {private String baseName = "base";public Base() {//baseName = "base";//默认成员变量在构造方法里这样赋值callName();}public void callName() {System.out.println(baseName);}/* * static class Sub extends Base{ private String baseName = "sub"; public * void callName(){ System.out.println(baseName); } public static void * main(String[] args) { Base base = new Sub(); } } */}
子类:
package cn.edu.lstc.extend;public class Sub extends Base { private String baseName = "sub"; //下面注释的代码没写的话其实就是这样执行的// public Sub() {// super();// baseName="sub";// } public void callName() { System.out.println(baseName); } public static void main(String[] args) { Base base = new Sub(); }}
1. Base b = new Sub();
2. Base b = 直接忽略,从 new Sub();开始
3. 类加载器加载 Base,Sub 类到jvm;
4. 为Base,Sub 类中的两个属性baseName 分配存储空间,但是不初始化;
注意:属性的初始化时放在构造器中,按照代码顺序执行的。
5. new Sub会调用Sub的无参构造器,而在这个构造器中会隐式调用父类Base的无参构造器;
6. 父类Base的构造器中代码本质是
public Base()
{
baseName = "base";
callName();
}
即父类的属性baseName 的值为base。但为何输出null,骚年别急。
7. 因为父类构造器方法是在子类中调用的,即大环境是子类。此时,调用的方法callName()当然是指子类的方法。而这个方法打印的属性baseName当然也是子类的。那现在子类的属性baseName的值是多少呢?答案是null.因为此时子类Sub的构造器内代码本质是:
super();
baseName="sub";
此时baseName="sub"还没执行。
因此,左后的值当然是null.
0 0
- 父类子类之间的一个经典题目(有关成员变量何时赋值和在哪里赋值的问题)
- 子类父类变量的相互赋值
- Java编程中,子类可以用用这种方法给继承父类的成员变量赋值么?
- java成员变量在什么时候赋值的?
- java成员变量在什么时候赋值的?
- 成员变量的初始化和赋值
- 类成员变量的赋值与初始化
- 一个变量赋值的小问题
- java Thread ,Thread.currentThread().getName() 的含义 & 普通成员变量是何时被赋值的
- 给一个类成员变量struct赋值.
- TPtr类型的成员变量无法在构造函数中赋值的问题
- 子类的拷贝、赋值构造函数切记不忘父类成员
- 在java中 变量之间是如何赋值的
- 关于含有指针成员的类的对象之间赋值指针的问题。
- 今天碰到的一个问题,关于通过基类对象的引用给子类赋值
- XMLlistCollection之间的赋值问题
- 关于静态成员变量的赋值
- 成员变量未赋值时的默认值
- 连接数据库
- java之-命令模式
- 微信网页开发问题汇总
- 分布式RAM
- 第三十篇:控制器的生成与多控制器的管理
- 父类子类之间的一个经典题目(有关成员变量何时赋值和在哪里赋值的问题)
- 数塔DP
- pygame编写的坦克游戏(一)
- King's Sanctuary
- cf#324 Div.2 Problem C Marina and Vasya
- [LeetCode-160] Intersection of Two Linked Lists(找到两链表公共交叉点)
- [面试金典]顺时针打印矩阵
- 全局变量和局部变量
- Java学习笔记———《http的get请求和post请求及封装的工具类》