A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘云龙 中级黑马   /  2012-7-20 22:33  /  1160 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


对子类的实例化过程,自己回想了一下,并进行了实际测试,主要是为了弄清在初始化过程中,子类对父类构造函数的调用规则。

总结如下:
1.若父类中定义了不带参构造函数,子类是否定义都通过;
2.若父类中没有定义任何构造函数,子类中定义通过,否则不同过;
3.若父类中只定义了带参构造函数,子类中必须定义构造函数,且必须调用父类的带参构造函数,否则报错。

下面给出实例:
(这里只说明第3条)
class Fu
{
   
    /*父类只定义了带参构造函数*/
    Fu(int i)
    {
        System.out.println("fu"+i);
    }
    void show()
    {
        System.out.print("fu");
    }
}


class Zi extends Fu
{
   
    Zi()
    {
        //super(9);//当此句被注释后,报错
        System.out.println("zi");
    }
    void show()
    {
        System.out.println("zi");
    }
}

public class JiCheng
{

    public static void main(String[] args)
    {
        
        Zi zi = new Zi();

    }

}

此外,当父类中存在静态代码块和构造代码块时,子类初始化时它们也会被执行。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马