java中私有变量和方法,Java中父类的私有变量和方法不被子类继承--如何理解

Java中父类的私有变量和方法不被子类继承

如何理解父类的私有变量和方法不被子类继承呢?

首先看代码如下:

public class Test {

public static void main(String[] args) {

Son s1 = new Son();//创建一个子类对象

System.out.println("子类的name = "+s1.getName()); // 第一次获取子类的name

System.out.println("-----------------");

s1.setName("小强");

System.out.println("子类的name = "+s1.getName()); // 第二次获取子类的name

}

}

class Father {

private String name = "父类";

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

class Son extends Father {

}

打印结果:

子类的name = 父类

-----------------

子类的name = 小强

结论:虽然说父类的私有方法和变量不被子类继承,但是子类中确实调用到了name这个变量。

怎么解释呢?可以理解为父类的变量和方法全部被子类继承(拥有),但是其中私有方法和变量不被子类看见(无权访问),所以导致子类直接调用不了继承过来的父类的私有变量和方法。那么,怎么访问呢?子类找到父类中能够访问该私有变量和方法的公共方法就可以。

比如,举个不太恰当的例子啊(个人理解,方便记忆)。A爸拥有一个密码箱,里面装满了钱,当A继承过来的时候呢(拥有),A爸没把密码告诉A,A知道有钱但是取不了(无权访问)。A要取钱做生意了,A得告诉A爸,“我需要钱了”,然后A爸私下打开密码箱,取出钱给A后,再锁上密码箱。当A做生意赚了钱存入钱时,A把钱给A爸,A爸私下打开密码箱,存入钱,然后锁上密码箱。

从内存角度来理解:父类的一切都被子类继承过来(包括私有),也即是子类拥有了一个完整的父类对象。子类对象所引用的内存有父类变量的一份拷贝。但是针对私有变量和方法呢,子类对象无法方法,只能通过父类对子类对象开放的方法调用父类的私有变量和方法。此处参考:https://www.cnblogs.com/aademeng/articles/6191691.html

3f660b2becc669d9d5e3b0e41b11202f.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值