黑马程序员技术交流社区

标题: 类继承的问题,希望能详细说明一下! [打印本页]

作者: 王新春    时间: 2011-11-13 20:21
标题: 类继承的问题,希望能详细说明一下!
本帖最后由 王新春 于 2011-11-22 16:44 编辑

父类中的name不是私有化了吗,那么当student继承person类之后,不是没有name,但是怎么会能输出子类中传入的参数“张三”呢?
public class ExtendsDemo {
        public static void main(String[] args) {
                Student s1=new Student("张三");
        }

}
class Person
{
    private String name;
    Person(String name)
    {
            this.name=name;
    }
}
class Student extends Person
{
        Student(String name)
        {
                super(name);
                System.out.println(name);
        }
       
}

作者: 宋文轩    时间: 2011-11-13 20:27
子类中System.out.println(name); 这句中的name是子类构造方法传进来的name 这个跟父类没有任何的关系
作者: 杨杰    时间: 2011-11-13 20:43
{:soso_e113:}你试试super.name;
作者: 坚强    时间: 2011-11-14 09:04
  private是私有的,但是Person(String name)这个构造函数给调用程序的人留了个入口,可以操作name变量了,并且赋值给name了,子类中的spuer(name)就已经赋值好了,之后就打印输出了。
作者: xiwangliujiao    时间: 2011-11-14 20:06
super(name)是调用父类的构造方法的,这个跟你说的那个name是私有的没有关系的,只是不可以直接拿来在子类中使用
作者: 赵燕燕    时间: 2011-11-15 01:09
public class ExtendsDemo {
        public static void main(String[] args) {
                Student s1=new Student("张三");
        }

}
class Person
{
    private String name;
    Person(String name)
    {
            this.name=name;
    }
}
class Student extends Person
{
        Student(String name1)
        {
                super(name1);
                System.out.println(name1);
        }
        
}
这样你可能就明白了,此时的name1是个临时变量,与Person中的name无关




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2