子类父类方法与属性的调用(3)
来源:互联网 发布:mac版微信备份在哪里 编辑:程序博客网 时间:2024/04/28 04:26
package com.me;
public class Books {
String name="super name";
static String age="super age";
public Books(){
System.out.println("super 构造方法");
System.out.println(this.name);
System.out.println(name);
System.out.println(age);
System.out.println("^^^^^^^^^^^^^^^^^^^^^^^");
(1) this.show1();
}
public void show1(){
System.out.println("super common show1");
System.out.println(this.name);
System.out.println(name);
System.out.println(this.age);
System.out.println(age);
}
}
package com.me;
public class Book extends Books {
String name="sub name";
static String age="sub age";
(3) public Book(){
System.out.println("sub 构造方法");
System.out.println(this.name);
System.out.println(name);
System.out.println(age);
System.out.println("book构造方法内@@@@@@@@@@@");
(2) this.show1();
}
public void show1(){
System.out.println("sub common show1");
System.out.println(this.name);
System.out.println(name);
System.out.println(this.age);
System.out.println(age);
}
public static void main(String args[]){
System.out.println("bs构造方法:");
Books bs=new Book();
System.out.println("bs构造方法结束");
System.out.println();
System.out.println("b的构造方法");
Book b=new Book();
System.out.println("b的构造方法结束");
}
}
结果:
bs构造方法:
super 构造方法
super name
super name
super age
^^^^^^^^^^^^^^^^^^^^^^^
sub common show1
null
null
sub age
sub age
sub 构造方法
sub name
sub name
sub age
book构造方法内@@@@@@@@@@@
sub common show1
sub name
sub name
sub age
sub age
bs构造方法结束
b的构造方法
super 构造方法
super name
super name
super age
^^^^^^^^^^^^^^^^^^^^^^^
sub common show1
(4) null
(5) null
sub age
sub age
sub 构造方法
sub name
sub name
sub age
book构造方法内@@@@@@@@@@@
sub common show1
sub name
sub name
sub age
sub age
b的构造方法结束
总结:
Books bs=new Book();
当执行到父类的构造方法(1)处时调用子类的show1;
show1方法里name打印的是null,此时还未执行子类的
构造方法,子类中的成员变量name还未初始化因此
此时打印的是null,但类变量age可以正确打印sub age,
当执行完show1后再去初始化子类此时执行(2)时可正
确打印name,age
Book b=new Book();
和上面的分析差不多,但是我们现在要思考的是我们在同一个类
中先定义了一个bs(Books bs=new Book();)对象,初始化过程中
name变量应该已经初始化了,但是(4)(5)处打印的还是null,这是
为什么呢?我认为子类中的name是局部变量,当创建b的时候重新
进行还是先从父类再到子类,子类调用show1时子类还未初始化变量
name没有赋值,b的创建和bs的创建完全独立,每新建一个对象局部
变量都会重新初始化,重新分配内存空间因此为null
- 子类父类方法与属性的调用(3)
- 子类父类方法与属性的调用(1)
- 子类父类方法与属性的调用(2).txt
- 子类父类方法与属性的调用(4)
- 父类与子类之间变量和方法的调用
- 父类与子类之间变量和方法的调用
- 父类与子类的方法调用关系
- python子类调用父类的方法
- Python 子类调用父类的方法
- python子类调用父类的方法
- python子类调用父类的方法
- python子类调用父类的方法
- python子类调用父类的方法
- java中子类,父类的方法调用及属性值
- 子类与父类属性或方法重名时,使用super.(属性名/方法名)调用父类型属性或方法
- 子类与父类之间的方法重载、隐藏、重写与虚方法调用
- 父类调用子类方法
- 子类调用父类方法
- const 用法(转载)
- 子类父类方法与属性的调用(2).txt
- 关于Eclipse的Axis2插件的安装
- 实时输入数量+单价自动转换为货币形式并计算出总额
- ASN.1编码学习笔记二
- 子类父类方法与属性的调用(3)
- [ZZ]distinct 用法
- 子类父类方法与属性的调用(4)
- 电力设备在线检测方法选择排序
- 子类构造函数必须先初始化父类
- SimpleDateFormat的用法
- RedHat Enterprise 5 的遠端桌面連線設定
- 语句块与构造方法的执行顺序
- 匿名类内部类