父类

public class Basic1 {public String str = "父类的成员变量!";public Basic1(){basic();}public void basic(){System.out.println("父类的方法!"+str);}
}

子类

public class Basic2 extends Basic1 {public String str = "子类的成员变量!";public void basic(){System.out.println("子类的方法!"+str);}
}

测试

public class BasicTest {@Testpublic void test1(){Basic1 basic = new Basic2();basic.basic();}
}

结果

子类的方法!null
子类的方法!子类的成员变量!

null??? why

原因

  1. 当我们调用new Basic2()时创建Basic2的实例。
  2. 实例的时候,系统会为Basic2对象分配内存空间,Basic2会有两个str实例变量,会分配两个空间来保存str的值。分配完空间以后str的值为null。
  3. 接下来程序在执行Basic2的构造器之前会执行Basic1的构造器,Basic1的构造函数中只有一行代码,调用了basic()方法,因为子类重写了父类的basic()方法,所以Basic1的构造函数中调用的是子类的basic方法。
  4. 但是此时子类的成员变量str还没有赋值,所以为null。

Java基础-子类和父类之间的诡异事件相关推荐

  1. Java子类与父类之间的对象转换

    在使用Java的多态机制时,常常使用的一个特性便是子类和父类之间的对象转换.从子类向父类的转换称为向上转换(upcasting),通过向上转换,我们能够在编写程序时采用通用程序设计的思想,在需要使用子 ...

  2. php 继承 父类使用子类,在PHP中使用 来 实现子类和父类之间的继承 。

    在PHP中使用 来 实现子类和父类之间的继承 . 更多相关问题 在迄今为止的工业社会,相对于其他要素来说,知识是最为重要也是最为稀缺的. 人们要成为现实的旅游者必须具有旅游动机足够的可以自由支配收入和 ...

  3. java 子类 父类 转换_Java子类与父类之间的类型转换

    1.向上转换 父类的引用变量指向子类变量时,子类对象向父类对象向上转换.从子类向父类的转换不需要什么限制,只需直接蒋子类实例赋值给父类变量即可,这也是Java中多态的实现机制. 2.向下转换 在父类变 ...

  4. java父类和子类_深入理解子类和父类之间关系

    Java学习的第二篇总结!--子类和父类 深入分析,希望大家多多支持! 从内存角度去分析代码,可以从本质上理解一门语言! 子类从父类继承分成两种: 1.方法的继承: 方法的继承,父类直接把自己的方法转 ...

  5. java中子类和父类的初始化和函数调用关系

    在开始说明之前,我们直接来看一个代码 public class play {public static void main(String[] args) {Base base = new Sub(); ...

  6. java基础-Objcet根父类

    文章目录 Objcet根父类 toString() getClass() finalize() hashCode() equals() 抽象类 接口 Comparable:内部比较器 Comparat ...

  7. java中子类继承父类程序执行顺序问题

    为什么80%的码农都做不了架构师?>>>    Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说 ...

  8. Java中子类覆盖父类方法所必须满足的条件

    因为太喜欢,所以转来,侵删! 参考自:http://www.it165.net/pro/html/201504/39284.html 一.描述 子类重写(覆盖)父类的方法必须满足的条件: 1.父类中的 ...

  9. java中子类继承父类时是否继承构造函数

    java继承中对构造函数是不继承的,只是调用(隐式或显式). 以下是例子: public class FatherClass { public FatherClass() {        Syste ...

  10. java基础之重写父类_繁星漫天_新浪博客

    在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写.需要注意,在子类中重写的方法需要和父类被重写的方法具有相同的方法名,参数列表,以及返回 ...

最新文章

  1. MySQL 里的 Timestrap 和 DateTime 和 Java 中的 Date
  2. nginx 集群部署_入门级实操教程!从概念到部署,全方位了解K8S Ingress!
  3. 百度地图JavascriptApi Marker平滑移动及车头指向行径方向
  4. 《后浪》刷屏力图破壁二次元,B站还有哪些短板?
  5. 组织敏捷之路上的七点体会
  6. JAVA面向对象程序设计(第二版) 袁绍欣 第六章答案
  7. swift5 实现录音App
  8. CentOS6.5安装nginx1.5.8时出现“cp: conf/koi-win 与/usr/local/nginx/conf/koi-win 为同一文件”的解决方法...
  9. PHP extension mcrypt must be loaded.
  10. 下载丨2020 PG亚洲大会(PPT汇总)
  11. oracle 历史查询是哪个机器发起的,Oracle 查询历史连接主机信息
  12. 阿里系 java_阿里系六大开源项目,你知道几个?
  13. VS2017离线下载 -- 如何让VS2017不占用C盘
  14. 拓端tecdat|R语言析因设计分析:线性模型中的对比
  15. 彩虹云商城 最新彩虹代刷V6.9.0免授权纯净完整版
  16. 服务器内存检测维修工具,使用edac工具来检测服务器内存故障.
  17. 服务器80端口找不到,如何查询服务器80端口被关闭
  18. 0基础可不可以学大数据
  19. 安卓手机管理_北斗ERP进销存管理(销存管理工具)V2.2.4 安卓手机版
  20. 【信奥赛一本通】1378:最短路径(shopth)(详细代码)

热门文章

  1. 债券收益率预测模型_基于时间序列模型的可转换债券收益率的实证研究
  2. 牛客练习赛47 D DongDong坐飞机 (分层最短路)
  3. draco3D轻量化技术在Unity3D中应用
  4. Python | 计算给定数字的平方(3种不同方式)
  5. 最详细的Log4j使用教程
  6. 一级域名怎么申请二级域名?
  7. 关于小米历史官方刷机包
  8. Day3:MVP+ButterKnife+Dagger2的使用
  9. 离开了公司,你还有什么
  10. 自动驾驶上的三种感知传感器(激光、毫米波雷达和摄像头)优缺点比较