黑马程序员技术交流社区

标题: 继承问题在内存中是怎样运行的 [打印本页]

作者: zhangwenjin    时间: 2016-6-28 22:38
标题: 继承问题在内存中是怎样运行的
class Person {
private String name;                           //名字
private int age;                               //年龄
Person(){                                         //空参构造函数
}
Person(String name,int age){                      //有参构造函数
  this.name = name;
  this.age = age;
}
public void setName(String name){               //赋值名字
  this.name = name;
}
public String getName(){                         //获取名字
  return name;
}
public void setAge(int age){                     //赋值年纪
  this.age = age;
}
public int getAge(){                             //获取年纪
  return age;
}
public void eat(){                              //定义共同方法
  System.out.println("吃饭");
}
}
class Teacher extends Person {                       //Teacher类继承Person类
Teacher(){}                                      //空参构造函数
Teacher(String name,int age){                    //有参数构造函数
  super(name,age);
}
public void teach(){                             //定义特有方法
  System.out.println("老师讲课");
}
}
class Student extends Person {                        //Student类继承Person类
Student(){}/空参构造函数
Student(String name,int age){                      //有参构造函数
  super(name,age);
}
public void study(){                               //定义特有方法
  System.out.println("学生学习");
}
}
class Test2_Person {
public static void main(String[] args) {
  Teacher p = new Teacher("蒋老师",25);
  System.out.println(p.getName()+p.getAge());
  p.eat();
  p.teach();
  System.out.println("**************************************");
  Student s = new Student("张三",21);
  System.out.println(s.getName()+s.getAge());
  s.eat();
  s.study();
}
}
父类的成员变量被私有 不能被子类继承 ,但是能赋值,这在内从中是什么样子的?

作者: 糊图    时间: 2016-6-28 23:02
通过子类中的有参构造创建对象,把参数通过子类有参构造中的super方法传递给父类的有参构造,这样就可以对变量进行赋值了
作者: zhangwenjin    时间: 2016-6-28 23:15
本帖最后由 zhangwenjin 于 2016-6-28 23:16 编辑

我知道是这样的,我是想知道既然父类中的成员变量被private修饰,也就是不能被子类继承,但是能赋值,这个过程在内从是怎么具体实现的?
作者: 迅雷    时间: 2016-6-28 23:27
Teacher p = new Teacher("蒋老师",25);调用Teacher类的有参构造,super(name,age)访问父类Person的有参构造,将name"蒋老师"赋值给this.name,把25赋值给this.age,




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