当前位置:  技术问答>java相关

请大家解释一下,输出结果为什么是这个?

    来源: 互联网  发布时间:2015-02-28

    本文导语:  class A { public A() { System.out.println("AAA"); } { System.out.println("456"); } } public class B extends A { B() { this(12); System.out.println("BBB"); } B(int x) { System.out.println("CCC"); } { System.out.println("123"); } public static void main(String[] args) {...

class A {
public A() {
System.out.println("AAA");
}
{
System.out.println("456");
}
}
public class B extends A {
B() {
this(12);
System.out.println("BBB");
}
B(int x) {
System.out.println("CCC");
}
{
System.out.println("123");
}
public static void main(String[] args) {
new B();
}
}
The output is:
456
AAA
123
CCC
BBB 
请大家解释一下,输出结果为什么是这个?

|
举例说明:
class A{
public int Avar;
public A(){
System.out.println("AAA");
dosomething();
}
public void dosomething(){
Avar=1111;
System.out.println("a.dosomething()");
}
}

public class order2 extends A
{
public int Bvar=2222;
public order2(){
System.out.println("BBB");
dosomething();
System.out.println("Avar="+Avar);
}
public void dosomething(){
System.out.println("Bvar="+Bvar);
}
public static void main(String[] args){
new order2();
}


}
执行结果是
AAA
Bvar=0
BBB
Bvar=2222
Avar=0

记住继承类的初值化的次序:
1。进入基类CONSTRUCTOR,初值化基类变量:
  进入A的CONSTRUCTOR,Avar = 0;

2。执行基类CONSTRUCTOR的BODY:
  System.out.println("AAA"); ==> 输出  AAA
  dosomething(); ==> 调用 B::dosomething(),继承类变量还没有初值化,确省值是0
                  ==>输出  Bvar=0

3。初值化继承类变量
  Bvar = 2222
  
4。执行继承类CONSTRUCTOR的BODY
    System.out.println("BBB");  ==> 输出BBB
    dosomething();  调用 B::dosomething(),继承类变量已经初值化,Bvar = 2222
                  ==>输出  Bvar=2222
    System.out.println("Avar="+Avar);
                  ==>输出  Avar=0

|
不是说了输出456的是父类的静态程序块,先与父类的构造函数-》输出AAA

this(12)是指调用本类的构造方法,参数是整形或其他可能的有12的类型;本利就是调用B(int x);你可以试试改成其它整数。

|
这个是由初始化的顺序决定的:

先父类后子类,先静态后非静态

父类的静态程序块-》父类的构造函数-》子类的静态程序块-》子类的构造函数

|
这个是由初始化的顺序决定的:

先父类后子类,先静态后非静态

父类的静态程序块-》父类的构造函数-》子类的静态程序块-》子类的构造函数 

    
 
 

您可能感兴趣的文章:

  • 大虾们给我解释解释这个输出问题。这里小弟先谢了。
  • 怎样让网页输出不解释html代码
  • ps命令输出的解释
  • 一段程序,不知道为什么给的值是5,2个输出的值都是15,迷茫!请帮忙解释下数据流程
  • 帮满解释一下ps的输出格式
  • socket编程 哪位高手帮我看看下面的问题,为什么输出结果会这样,帮我解释解释
  • 哪位C语言高手帮我解释下下面程序的运行结果 ???????
  • 解释器文件问题??为什么没结果啊?
  • 请问下面一个关于vfork的c程序的运行结果为什么会出现Segmentation fault ?哪位高手帮我解释下,谢谢。
  • 谁知道AB显示的结果含义啊~?帮忙解释下~谢谢
  • 一段代码,在单核/多核环境下运行,结果不一样,求高手解释!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • classpath里的.;到底有什么用?能解释解释吗?
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • 请问java的xml解释器有哪些?怎么能在applet里用这些解释器?
  • 实在是不能理解,谁能帮我解释解释!
  • 能不能帮我解释解释什么是EJB?
  • 关于"symbol lookup error"问题的诡异现象,高手帮忙解释解释
  • alex 解释器 alexinterpreter
  • 地震解释软件系统 OpendTect
  • 请教高人来解释一下小弟关于poll()函数的疑惑
  • Java源代码解释器 Beanshell
  • 这个"."怎么解释?
  • 高手帮忙解释
  • 请详细解释javamail里的“收件人类型”的CC,TO,BCC的意义???
  • linux中/dev下都是些什么文件啊?大侠们谁可以帮我解释一下?
  • 多线程的例子。但是不知道为什么看不懂。唉,笨:(各们帮帮忙了给我解释解释
  • 数字电视CA卡解释模块 OSCam
  • markdonw解释器 sundown
  • Brainfuck编译器和JIT解释器 bfc
  • Scheme Lisp 解释器 Subs
  • MQ错误码解释工具 MQRC2


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3