子类能不能子类继承父类私有属性的私有成员

spring 注入 子类继承父类私有成员变量 - Spring - Java - ITeye论坛
spring 注入 子类继承父类私有成员变量
锁定老帖子
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
等级: 初级会员
发表时间:&&
相关知识库:
各位,功能很简单,就是一个接口,有个父类实现,子类实现继承父类实现,那么spring的配置文件管理的是子类实现,那么在使用的时候,父类的私有变量也同时继承过来?代码如下:
ITest.java
public interface ITest {
void printParent();
public class ParentTestImpl implements ITest
private String parentString="";
public void printParent() {
System.out.println("parent ....." );
public class SubTestImpl extends ParentTestImpl{
private String subString="";;
public void printParent() {
System.out.println("..... sub ....." );
junit 测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class ITestTest{
@Autowired
@Qualifier("subTestImpl")
private ITest tT
public void test() {
tTest.printParent();
在上述调试的时候,如附件的图显示,父类的私有成员变量parentString已经被初始化了,这块不明白是怎么回事?
等级: 初级会员
发表时间:&&
最后修改:
这个和 Spring 没关系.
SubTestImpl 的构造方法,会调用父类 ParentTestImpl 的构造方法.
ParentTestImpl 构造方法会初始化自己的 属性 parentString.
请登录后投票
文章: 1018
来自: 陕西
发表时间:&&
因为你没有明确定义子类构造方法,而使用了默认的构造方法,如楼上所言,默认调用了父类的构造,如果你定义了子类的构造,不调用父类就明白了!
请登录后投票
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术子类继承父类的私有属性 - 博客频道 - CSDN.NET
心静如水,方自不乱
子类可以继承父类的所有成员跟方法,继承下来不代表可以访问,要访问得看访问控制规则。私有属性也可以继承,不过根据访问控制规则,私有属性虽继承下来却不可以访问的,只有通过public的方法才能访问继承下来的私有属性。
B继承A类,C继承B类。A类中的私有属性,到了C会怎么样,能继承、访问吗?答案是:如果A中的属性有增加setget方法,可以访问的:
public class A {
public int getA(){
public void setA(int a){
public class B extends A{
public int getB() {
public void setB(int b) {
public class C extends B {
public int getC() {
public void setC(int c) {
}那么当C c1=new C()时。c1可以使用setA()getA()访问控制从A类中继承来的私有属性a;
Naruto_ahu
排名:第12908名
(17)(0)(0)(3)(9)(1)(3)(17)(10)(1)(6)(9)(0)(1)(6)(5)(1)(5)(10)(1)(1)(1)(0)(1)欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 10222 人关注过本帖
标题:子类能不能继承父类的私有成员?
等 级:新手上路
帖 子:14
结帖率:100%
&&已结贴√
&&问题点数:5&&回复次数:8&&&
子类能不能继承父类的私有成员?
刚在论坛看了下&&说能的也有 不能的也有
我理解&&子类能继承父类的私有成员&&&但不能访问。&&对吗?&&& 除非用set??&&get???来访问
搜索更多相关主题的帖子:
等 级:版主
威 望:54
帖 子:2508
专家分:6424
子类虽然访问不了父类的私有变量,但是可以通过方法访问
你的优秀和我的人生无关!!!!
    我要过的,是属于我自己的生活~~~
等 级:新手上路
帖 子:14
子类能继承父类的私有成员?&&知道访问不了 我看书上说继承
等 级:论坛游民
专家分:21
程序代码://class Human {
&&& private int qqN&&//这个是私有成员
&&& public S
&&& Human() {
&&&&&&&&qqNum = ;
&&&&&&&&name = &null&;
&&& public int askQQNum() {&&//这个public方法可以访问private qqNum
&&&&&&&&return qqN
&&& public void changeQQNum(int a) {&&&//这个public方法也可以访问 qqNum
&&&&&&&&qqNum =
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);
等 级:论坛游民
专家分:21
程序代码:class Human {
&&& private int qqN&&//这个是私有成员
&&& public S
&&& Human() {
&&&&&&&&qqNum = ;
&&&&&&&&name = &null&;
&&& public int askQQNum() {&&//这个public方法可以访问private qqNum
&&&&&&&&return qqN
&&& public void changeQQNum(int a) {&&&//这个public方法也可以访问 qqNum
&&&&&&&&qqNum =
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);
//刚错了,多了个//符号
等 级:版主
威 望:54
帖 子:2508
专家分:6424
以下是引用sf878131在 22:19:01的发言:
子类能继承父类的私有成员?&&知道访问不了 我看书上说继承不能继承父类的私有成员
你的优秀和我的人生无关!!!!
    我要过的,是属于我自己的生活~~~
等 级:贵宾
威 望:14
帖 子:279
专家分:1362
要是能继承,当然就可以访问了。既然不可以访问,当然就不能继承。
比如一个类有私有变量,那么我在该类的方法中可以直接使用私有变量,只不过在别的类里面无法来访问而已。假如可以继承私有变量,也就是说该私有变量成了继承类的私有变量了,按照这个说法,在继承的类中的方法里也是可以直接使用私有变量的,所以变成了继承类可以访问被继承类的私有变量了。这个说法矛盾。
等 级:论坛游民
专家分:11
不能直接继承,但可以通过间接的方式获取。
等 级:论坛游民
帖 子:41
专家分:16
老帖了。不过我看大家都错了,有必要纠正一下,以免误导大家学习。
子类可以继承父类的所有成员跟方法,继承下来不代表可以访问,要访问得看访问控制规则。。私有属性也可以继承,不过根据访问控制规则,私有属性虽继承下来却不可以访问的,只有通过public的方法访问继承下来的私有属性。
B继承A类,C继承B类。A类中的私有属性,到了C会怎么样,能继承、访问吗?答案是:如果A中的属性有增加setget方法,可以访问的。举例
public class A {
&&& public int getA(){
&&& public void setA(int a){
&&&&&&&&this.a=a;
public class B extends A{
&&& public int getB() {
&&& public void setB(int b) {
&&&&&&&&this.b =
public class C extends B {
&&& public int getC() {
&&& public void setC(int c) {
&&&&&&&&this.c =
那么当C c1=new C()时。c1可以使用setA()getA()访问控制从A类中继承来的私有属性a;
版权所有,并保留所有权利。
Powered by , Processed in 0.062393 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved子类到底能不能继承父类的私有成员,之前不是很清楚,曾以为是继承了但没有权限访问。今天做了个测试,证明了:没有继承。
看下代码:
namespace 对象
private string aa = "dfdf";
private string print()
return "****";
public string AA
class B : A
private int a = 1;
public void test()
//Type type = typeof(A);
//MethodInfo methodInfo = type.GetMethod("print", BindingFlags.NonPublic | BindingFlags.Instance);
//A testA = (A)Activator.CreateInstance(type, false);
//string str = (string)methodInfo.Invoke(testA, null);
//Console.WriteLine(str);
Type type2 = typeof(B);
MemberInfo[] memberInfo = type2.GetMembers(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField);
foreach (MemberInfo mi in memberInfo)
Console.WriteLine(mi.Name);
class Program
static void Main(string[] args)
B b = new B();
测试出来的结果是:没有父类的私有字段。ok。
阅读(...) 评论()}

我要回帖

更多关于 子类访问父类私有成员 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信