黑马程序员技术交流社区

标题: 子类的函数可以通过子类的构造函数访问到父类的私有变... [打印本页]

作者: 黄诗宾    时间: 2013-3-27 23:54
标题: 子类的函数可以通过子类的构造函数访问到父类的私有变...
本帖最后由 黄诗宾 于 2013-3-28 08:57 编辑
  1. abstract class Fu{
  2. private String name;
  3. private int age;
  4. private double salary;

  5.         Fu(String name,int age,double salary){
  6.         this.name=name;
  7.         this.age=age;
  8.         this.salary=salary;

  9.         }

  10.          String getName(){
  11.                 return name;
  12.                 }
  13.          int getAge(){
  14.                 return age;
  15.         }
  16.          double getSalary(){
  17.                 return salary;
  18.         }

  19. abstract void work();
  20. }



  21. class Programmer extends Fu{

  22.         Programmer(String name,int age,double salary){
  23.                 super(name,age,salary);
  24.         }
  25.          void work(){
  26.             System.out.println(name+age+salary+"打程序");   
  27.                 }
  28. }

  29. class Demo2{
  30.         public static void main(String[] args){
  31.                 Programmer p = new Programmer("张三",22,2000.22);
  32.                 p.work();
  33.         }
  34. }
复制代码
打印显示


这个意思是说
     子类的函数可以通过子类的构造函数访问到父类的私有变量么?

作者: 续圆凯    时间: 2013-3-28 00:05
一个子类只能继承其父类的可访问的成员,并且该子类没有覆盖或者说隐藏父类中的那些可访问成员。所以,一个类的成员就是指在这个类中所声明的属性和方法,再加上从其父类继承而来的属性和方法。也就是说,子类是不能继承父类的私有成员的。

虽然子类不继承父类中的私有成员,但是在父类中生命的这些私有成员仍然是子类类型对象的一部分。因为在实例化对象的时候,只初始化在当前类中所声明的属性明显是不足够的,还需要初始化其父类中所有声明的属性。在实例化的过程中,JVM 需要为对象的类及其父类中所有定义的属性分配空间,包括父类中声明的私有成员。

所以,我们可以说:子类不能从父类继承私有成员,但是子类的对象是包括子类所不能从父类中继承的私有成员的。


作者: 黑马19我最牛    时间: 2013-3-28 01:11
子类是不能访问父类中的private   
它报错的意思是,name 可以在父类中访问private,但是不能在子类中访问父类中的name

private关键字的定义是“除了包含该成员的类之外,其他任何类都无法访问这个成员.”,也就是说只有自己才能直接访问到private成员,其他任何类,包括子类都无法访问到这个成员。
作者: 李尧    时间: 2013-3-28 02:39
意思是说 name这个属性 只能在fu这个类中才能访问 因为他是私有的....




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