| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10882 人关注过本帖
标题:子类能不能继承父类的私有成员?
只看楼主 加入收藏
sf878131
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2007-10-1
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:8 
子类能不能继承父类的私有成员?
刚在论坛看了下  说能的也有 不能的也有
我理解  子类能继承父类的私有成员   但不能访问。  对吗?    除非用set??  get???来访问
求解答
搜索更多相关主题的帖子: 子类 父类 成员 继承 
2010-06-28 16:57
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:1 
子类虽然访问不了父类的私有变量,但是可以通过方法访问

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-06-28 17:19
sf878131
Rank: 1
等 级:新手上路
帖 子:14
专家分:1
注 册:2007-10-1
收藏
得分:0 
子类能继承父类的私有成员?  知道访问不了 我看书上说继承
2010-06-28 22:19
珊瑚背
Rank: 2
等 级:论坛游民
威 望:1
帖 子:8
专家分:21
注 册:2010-6-27
收藏
得分:1 
程序代码:
//class Human {
    private int qqNum;  //这个是私有成员
    public String name;
    Human() {
        qqNum = 11111111;
        name = "null";
    }
    public int askQQNum() {  //这个public方法可以访问private qqNum
        return qqNum;
    }
    public void changeQQNum(int a) {   //这个public方法也可以访问 qqNum
        qqNum = a;
    }
}

class Student extends Human {
}

public class Mans {
  public static void main(String[] args) {
      Student BillGates = new Student();
      BillGates.changeQQNum(1234567);    // 通过这个方法访问私有成员
      //BillGates.qqNum 不能这样访问
      BillGates.name = "zhangsan";    //public 成员当然可访问
      System.out.println(BillGates.askQQNum());
      System.out.println(BillGates.name); 
  }
}
2010-06-28 22:35
珊瑚背
Rank: 2
等 级:论坛游民
威 望:1
帖 子:8
专家分:21
注 册:2010-6-27
收藏
得分:0 
程序代码:
class Human {
    private int qqNum;  //这个是私有成员
    public String name;
    Human() {
        qqNum = 11111111;
        name = "null";
    }
    public int askQQNum() {  //这个public方法可以访问private qqNum
        return qqNum;
    }
    public void changeQQNum(int a) {   //这个public方法也可以访问 qqNum
        qqNum = a;
    }
}

class Student extends Human {
}

public class Mans {
  public static void main(String[] args) {
      Student BillGates = new Student();
      BillGates.changeQQNum(1234567);    // 通过这个方法访问私有成员
      //BillGates.qqNum 不能这样访问
      BillGates.name = "zhangsan";    //public 成员当然可访问
      System.out.println(BillGates.askQQNum());
      System.out.println(BillGates.name);
  }
}
//刚错了,多了个//符号
2010-06-28 22:38
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用sf878131在2010-6-28 22:19:01的发言:

子类能继承父类的私有成员?  知道访问不了 我看书上说继承
不能继承父类的私有成员

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-06-29 08:19
linjx0123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
注 册:2006-4-7
收藏
得分:1 
要是能继承,当然就可以访问了。既然不可以访问,当然就不能继承。

比如一个类有私有变量,那么我在该类的方法中可以直接使用私有变量,只不过在别的类里面无法来访问而已。假如可以继承私有变量,也就是说该私有变量成了继承类的私有变量了,按照这个说法,在继承的类中的方法里也是可以直接使用私有变量的,所以变成了继承类可以访问被继承类的私有变量了。这个说法矛盾。
2010-06-29 11:49
ljxch
Rank: 2
等 级:论坛游民
帖 子:6
专家分:11
注 册:2010-6-1
收藏
得分:1 
不能直接继承,但可以通过间接的方式获取。
2010-06-30 10:51
小程序员
Rank: 2
等 级:论坛游民
帖 子:41
专家分:16
注 册:2010-3-8
收藏
得分:0 
老帖了。不过我看大家都错了,有必要纠正一下,以免误导大家学习。
子类可以继承父类的所有成员跟方法,继承下来不代表可以访问,要访问得看访问控制规则。。私有属性也可以继承,不过根据访问控制规则,私有属性虽继承下来却不可以访问的,只有通过public的方法访问继承下来的私有属性。
B继承A类,C继承B类。A类中的私有属性,到了C会怎么样,能继承、访问吗?答案是:如果A中的属性有增加setget方法,可以访问的。举例
public class A {
    private int a;
   
    public int getA(){
        return a;
    }
    public void setA(int a){
        this.a=a;
    }

}
public class B extends A{
     private int b;

    public int getB() {
        return b;
    }

    public void setB(int b) {
        this.b = b;
    }
     
}
public class C extends B {
    private int c;
    public int getC() {
        return c;
    }

    public void setC(int c) {
        this.c = c;
    }
}
那么当C c1=new C()时。c1可以使用setA()getA()访问控制从A类中继承来的私有属性a;







2011-03-28 11:22
快速回复:子类能不能继承父类的私有成员?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018705 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved