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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 牧歌 中级黑马   /  2014-12-17 22:52  /  918 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
*基类包含一静态变量、包含一实例变量
*包含一个静态初始化块以及一个构造子
*/
class Base{
    public staticint a = 10;
    public int b = 20;
    static
   {
        System.out.println("StaticInit Base " + a);
        //System.out.println("NullInit " + b);
   }
    public Base()
   {
        System.out.println("Init Base" + this.b);
   }
}
/**
*一级子类和基类包含的内容一样
**/
class SuperClass extends Base{
    public staticint a1 = getSuperStaticNumber();
    public int b1 = getSuperInstanceNumber();
    public SuperClass()
   {
        System.out.println("InitSuperClass" + this.b1);
   }
    static
   {
        System.out.println("StaticInit SuperClass" + a1);
   }
    public staticint getSuperStaticNumber()
   {
        System.out.println("Staticmember init");
        return 100;
   }
    public int getSuperInstanceNumber()
   {
        System.out.println("Instancemember init");
        return 200;
   }
}
/**
*二级子类为测试该代码的驱动类
*/
public class SubClass extends SuperClass{
    public staticint a2 = getStaticNumber();
    public int b2 = getInstanceNumber();
    public SubClass()
   {
        System.out.println("InitSubClass " + this.b2);
   }
    public staticint getStaticNumber()
   {
        System.out.println("Staticmember init Sub");
        return 1000;
   }
    public int getInstanceNumber()
   {
        System.out.println("Instancemember init Sub");
        return 2000;
   }
    public static void main(String args[])
   {
        new SubClass();
   }
    static
   {
        System.out.println("StaticInit " + a2);
   }
}
这段代码会有以下输出:
Static InitBase 10
Staticmember init
Static InitSuperClass 100
Staticmember init Sub
Static Init1000
Init Base20
Instancemember init
InitSuperClass 200
Instancemember init Sub
InitSubClass 2000


感觉好复杂啊。。。


评分

参与人数 1黑马币 +2 收起 理由
王海生 + 2 很给力!

查看全部评分

3 个回复

倒序浏览
同学笔记做得挺认真啊,赞扬一下.
回复 使用道具 举报
王海生 发表于 2014-12-17 23:41
同学笔记做得挺认真啊,赞扬一下.

谢谢。。
回复 使用道具 举报
看了好半天原来是子父类的调用,只有一点感悟:子类中所有的构造函数都会默认访问父类中空参数的构造函数,然后看程序就容易多了。。。补充一句,笔记很详细:loveliness:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马