Chinaunix首页 | 论坛 | 博客
  • 博客访问: 203137
  • 博文数量: 73
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 750
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-13 18:32
文章分类

全部博文(73)

文章存档

2009年(1)

2008年(72)

我的朋友

分类: Java

2008-03-25 22:00:20

  1,初始化一个子类时会调用基类的构造器,并在调用该构造器之前进行字段的默认初始化。

package com.biaoflying;

class Base{
    private String base=test();
    public Base(){
        System.out.println("Base");
    }
    private static String test(){
        System.out.println("The base class' " +
                "fields initialized");
        return "base";
    }
    public void append(String appender){
        base+=appender;
    }
    public String toString(){
        return base;
    }
}

public class Extender extends Base{
    
    /*public void append(String appender){
        base=appender+base;
    }*/
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Extender ex=new Extender();
        ex.append(" appender");
        System.out.println(ex);
    }

}

#Output:
The base class' fields initialized
Base
base appender

  从输出的结果看,在子类初始化时首先对基类的字段进行了初始化,然后依次调用基类和子类的构造器。

  2,默认构造器和非默认构造器。

package com.biaoflying;

class Game{
    public Game(int i){
        System.out.println("Game constructor");
    }
}

public class BorderGame extends Game{
    
    public BorderGame(int i){
        super(i);
        System.out.println("BorderGame constructor");
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new BorderGame(11);
    }

}
#输出:
Game constructor
BorderGame constructor
#去掉两个类constructors的parms,修改new BorderGame();
#注释//super(i);
#输出:
Game constructor
BorderGame constructor




阅读(844) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~