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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 幕丶落 中级黑马   /  2015-4-7 09:11  /  917 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Super
{
        int i=0;
        public Super(String s)
        {
                i=1;
        }
}
class Demo extends Super
{
       
        public Demo(String s)
        {
                i=2;
        }
        public static void main(String[] args)
        {
                Demo d=new Demo("yes");
                System.out.println(d.i);
        }
}
这是毕老师视频中的一道题,但是听完之后不是很明白,希望大神帮忙解释一下,谢谢了

4 个回复

倒序浏览
不是大神,共同学习了
回复 使用道具 举报
Demo构造的第一行必须指定super(String s),应为父类没有空参数的构造函数,不然会编译失败的
回复 使用道具 举报
在对子类对象进行初始化时,父类的构造函数也会执行,子类构造函数第一行有一条隐式的语句super()因为这样父类的数据子类可以直接获取。如果父类中没有空参数的构造函数,子类必须手动通过super形式来访问父类构造函数。而你的代码是错的编译不通过,你要在子类构造函数第一行添加一句super(s);
回复 使用道具 举报
这段代码应该是想让我们知道的第一点是:如果父类有参数的构造函数,子类必须向父类传递这个参数;第二点:就是输出的i为2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马