JAVA继承的初始化问题

看代码说结果
  1. public class Dervied extends Base {
  2.     private String name = "dervied";
  3.     public Dervied() {
  4.         tellName();
  5.         printName();
  6.     }
  7.     public void tellName() {
  8.         System.out.println("Dervied tell name: " + name);
  9.     }
  10.     public void printName() {
  11.         System.out.println("Dervied print name: " + name);
  12.     }
  13.     public static void main(String[] args){
  14.         new Dervied();
  15.     }
  16. }
  17. class Base {
  18.     private String name = "base";
  19.     public Base() {
  20.         tellName();
  21.         printName();
  22.     }
  23.     public void tellName() {
  24.         System.out.println("Base tell name: " + name);
  25.     }
  26.     public void printName() {
  27.         System.out.println("Base print name: " + name);
  28.     }
  29. }
运行结果:
Dervied tell name: null
Dervied print name: null
Dervied tell name: dervied
Dervied print name: dervied

为什么会这样呢
并且无论修改Base的name为public还是protected,结果都是这样.
甚至代码改成这样,还是这个结果(Base类的name字段改成了 basename)

  1. public class Dervied extends Base {
  2.     private String name = "dervied";
  3.     public Dervied() {
  4.         tellName();
  5.         printName();
  6.     }
  7.     public void tellName() {
  8.         System.out.println("Dervied tell name: " + name);
  9.     }
  10.     public void printName() {
  11.         System.out.println("Dervied print name: " + name);
  12.     }
  13.     public static void main(String[] args){
  14.         new Dervied();
  15.     }
  16. }
  17. class Base {
  18.     public String basename = "base";
  19.     public Base() {
  20.         tellName();
  21.         printName();
  22.     }
  23.     public void tellName() {
  24.         System.out.println("Base tell name: " + basename);
  25.     }
  26.     public void printName() {
  27.         System.out.println("Base print name: " + basename);
  28.     }
  29. }

后台一个大神一语道破
Base的构造函数中,调用的两个方法tellName和printName,因为继承的原因,应该执行的是子类的方法,而子类此时还没有初始化这个数据成员,所以显示为null.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-1784890/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29254281/viewspace-1784890/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值