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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

xuemeng 发表于 2013-5-18 14:44
如果笔试, 你说子类可以继承父类私有属性, 肯定不通过, 但是面试就可以说能够继承,因为你可以给面试官解 ...

你好,我去搜了下,有的说可以,有的说不行。说可以的也说的是这种情况。但是我添加了一行代码打印出Student的name,它就报错,显示必须到Person类里面去访问。

所以我想,即便是真的执行隐式继承,也不可以高调的去显示执行(比如我说的打印不出)。这是我的想法,你认为呢?

class Person   
{
        private String name;
        private int age;
        //已经完成了给name和age赋值的功能
        public Person(String name, int age)
        {
                this.name = name;
                this.age = age;
        }
}

class Student extends Person
{
        private String sn;//学号
        public Student(String name,int age,String sn)
        {
                super(name,age);//调用父类的构造方法,必须放在第一行,否则错误SuperDemo2.java:24: 错误: 对super的调用必须是构造器中的第一个语句
                this.sn = sn;
        }
}        

class SuperDemo21
{
        public static void main(String[] args)
        {
                //想创建Student对象的时候,就给name和age赋值
                Student p = new Student("Will",17,"007");
                System.out.println(p.name);//只是新加了这一行代码,想打出Student的name
        }
}

报错:SuperDemo21.java:29: 错误: name可以在Person中访问private!
回复 使用道具 举报
黑马一刘昭 发表于 2013-5-18 16:58
你好,我去搜了下,有的说可以,有的说不行。说可以的也说的是这种情况。但是我添加了一行代码打印出Stud ...

因为你这样调用, 就不是隐式继承了啊!
回复 使用道具 举报
xuemeng 发表于 2013-5-15 14:12
做这道题,首先要明白类加载时执行顺序::

new 子类对象时的执行顺序:Ø 当new子类对象, 的执行顺序(省去了 ...

非常给力,学习了。我用其他代码验证的结果也是这样的。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马