成员变量、构造器的运行顺序
2016-07-18 23:28
211 查看
package com.athong.day_0718;
public class Test {
public static void main(String[] args) {
new B(30);
}
}
abstract class A{
public A(){
this.fun();
}
public abstract void fun();
}
class B extends A{
private int hh = 100;
public B(int hh){
this.hh = hh;
}
public void fun(){
System.out.println("值:"+ hh);
}
}
运行结果:值:0
分析:这个是成员变量,先执行类A的构造器,再初始化成员变量,而在执行类A构造器时,调用fun()方法,实际调用类B中的fun()方法,而此时,hh还没有被初始化,默认初始化为0 ,所以输出结果为0。
public class Test {
public static void main(String[] args) {
new B(30);
}
}
abstract class A{
public A(){
this.fun();
}
public abstract void fun();
}
class B extends A{
private int hh = 100;
public B(int hh){
this.hh = hh;
}
public void fun(){
System.out.println("值:"+ hh);
}
}
运行结果:值:0
分析:这个是成员变量,先执行类A的构造器,再初始化成员变量,而在执行类A构造器时,调用fun()方法,实际调用类B中的fun()方法,而此时,hh还没有被初始化,默认初始化为0 ,所以输出结果为0。
相关文章推荐
- SQL Select语句完整的执行顺序
- SQLServer中SELECT语句的执行顺序
- ASP脚本的执行顺序详细说明
- 数据库中的SELECT语句逻辑执行顺序分析
- 浅谈JavaScript 的执行顺序
- 探析浏览器执行JavaScript脚本加载与代码执行顺序
- Javascript代码在页面加载时的执行顺序介绍
- jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
- JavaScript 程序执行顺序问题总结
- For循环中分号隔开的3部分的执行顺序探讨
- ruby 程序的执行顺序
- Shell 命令执行顺序分析[图]
- JavaScript 全面解析各种浏览器网页中的JS 执行顺序
- Html中JS脚本执行顺序简单举例说明
- oracle select执行顺序的详解
- 在Java中自由块的执行顺序
- try catch finally的执行顺序深入分析
- Unity3D中脚本的执行顺序和编译顺序
- linux shell命令执行顺序的控制方法
- JavaScript执行顺序详细介绍