首页
论坛
图书
开发资料
在线文档
网址
下载
联系我们
 新闻│Java│JavaScript│Eclipse│Eclipse 英文│J2EE│J2ME│J2SE│JSP│Netbeans│Hibernate│JBuilder│Spring│Struts
站内搜索: 请输入搜索关键词

当前页面: 开发资料首页 → Java 专题 → 深入理解Java对象实例生成的例子

深入理解Java对象实例生成的例子

摘要: 深入理解Java对象实例生成的例子

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="442" height="86" valign="top">

class A {

  public int Avar;

  public A() {

   System.out.println("AAA");

   doSomething();

  }

  public void doSomething() {

   Avar = 1111;

   System.out.println("A.doSomething()");

  }

}

public class B extends A {

  public int Bvar = 2222;

  public B() {

   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 B();

 }

}

讲解:
顺序是这样得,首先生成B就得先生成A(没有父,哪来子)
所以调用A的构造器,输出AAA,
然后调用方法dosomething,!!!
注意:A的该方法被B覆盖,
而你生成的是B的对象,
所以它调用B的方法,
由于BVAR目前没有给定值,
所以自动初始化为0,
然后生成B对象,
先初始化变量BVAR,
然后调用构造器输出BBB,
然后调用方法,
这时BVAR已初始化,
所以输出BVAR=2222,
而对象A中变量AVAR由于没有调用对象A的方法dosomething,
所以其值为0,则输出0
全部输出就如下:

</td> <td width="242" valign="top">

</td> </tr> <tr> <td height="20" colspan="2">


</td> </tr> </table>

AAA
Bvar=0
BBB
Bvar=2222
Avar=0
注意:初始化顺序,当继承时,先生成超类对象,生成对象时,先生成静态变量,然后是一般变量,然后调用构造器!当所以超类对象生成后,生成本对象,顺序一样! 当方法被覆盖时,调用目前对象的方法!这得注意。

下面这个题目你能选对答案吗?:

What will happen when you attempt to compile and run the following code?

class Base

{

    int i = 99;

    public void amethod()

    {

        System.out.println("Base.amethod()");

    }

       

    Base()

    {

        amethod();

    }

}

public class Derived extends Base

{

    int i = -1;

       

    public static void main(String argv[])

    {

        Base b = new Derived();

        System.out.println(b.i);

        b.amethod();

    }

    public void amethod()

    {

        System.out.println("Derived.amethod()");

    }

}

 A. Derived.amethod()

    -1

    Derived.amethod()

 B. Derived.amethod()

    99

    Derived.amethod()

C. 99

    Derived.amethod()

D.

    Compile time error


function TempSave(ElementID) { CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value); CommentsPersistDiv.save("CommentXMLStore"); } function Restore(ElementID) { CommentsPersistDiv.load("CommentXMLStore"); document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent"); } </td> </tr> <tr>


↑返回目录
前一篇: Java通过命令行取得MAC地址
后一篇: java实现的简单的端口扫描程序

首页 | 全站 Sitemap | 联系我们 | 设为首页 | 收藏本站
版权所有 Copyright © 2006-2007, Java 编程资料牛鼻站, All rights reserved