java 子类有没有继承父类的私有属性和私有方法呢_

java 子类有没有继承父类的私有属性和私有方法呢?


一个小Demo如下:

class Fu {
    //父类的两个私有属性
    private int a = 1;
    private int b = 2;
    //父类的一个私有方法
    private void haha() {
        System.out.println("a=" + a);
    }

    void sop() {
        haha();
        System.out.println("b=" + b);
    }
}

class Zi extends Fu {
}

public class Test {
    public static void main(String[] args) {
        Zi zi = new Zi();
        zi.sop();
        /*
        父类的sop()方法是可以编译运行的,并且打印结果
        为:
            a=1
            b=1
        */
    }
}

我们根据测试结果就可以明白,如果子类没有继承父类的私有属性和私有方法,那么父类的sop方法肯定不可以使用。所以目前可以得出一个简单的结论那就是子类是可以继承父类所有的东西的,只是对于private等修饰符对外不可见,所以修饰跟继承没有关系,只是影响属性或者方法对外是否可见 。


对于这一问题,Java官方文档也有解释:

Java官方文档的解释:“A subclass does not inherit the private members of its parent class. However, if the superclass has public or protected methods for accessing its private fields, these can also be used by the subclass.”

Java官方文档的解释:子类不能继承父类的私有属性,但是如果子类中公有的方法影响到了父类私有属性,那么私有属性是能够被子类使用的。

我个人还是比较赞同这个说法的,比如上面的例子,如果在子类中直接用父类的私有属性和方法,那么肯定是报错的,但是使用父类的sop()方法,却可以成功,很好的匹配了官方文档解释。突然想到一篇博客里举的生活中的例子来说,我们不可能完全继承父母的一切(如性格等),但是父母的一些无法继承的东西却仍会深刻的影响着我们。也是比较契合官方文档解释的。


当然上面我把看到博文加上自己理解简单的做了个记录,下面是我觉得很好的个总结,大家可以去看看获得一些启发和思考:
知乎:java中子类有没有继承父类的私有变量?-Robin的回答部分

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值