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




  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值