面向对象编程学习感悟之私有属性的作用(private)

本文详细探讨了Java中私有属性的作用及其在封装思想中的应用。通过实例讲解了如何利用私有属性和方法实现对外部的安全访问与修改,以及如何通过添加判断条件进一步增强安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嘿!好久不见

最近学习到了对象的权限修饰符,当我学习到private时有一丝疑惑。因为我只知道他有什么效果,却不知道他有什么用。经过冥思苦想终于有一些头绪,记录于此

私有属性的效果

当一个属性被private修饰时,意为着当前属性只能在当前类内访问。其他任何地方都将不能访问。

在外部得到私有属性

私有属性只能在内部用,那么如果有需求,要在程序外部得到私有属性的值怎么办?
既然可以在内部使用,那么就在内部写一个方法返回数据就好了,这样外面就得到了值,并且外面的改动也不会影响到类属性的值。
class Pig{
	private int weight;	//猪的体重

	public int getWeight(){
		return this.weight;
	} 
}

在外部修改私有属性

同上写一个方法,供用户在外部修改:
class Pig{
	private int weight;	//猪的体重

	public int getWeight(){
		return this.weight;
	} 
	public void setWeight(int newWeight){
		this.weight = newWeight;
	}
}

那么旧的问题解决了,新的问题就来了。
既然我定义private是为了保护属性,那现在通过方法又可以对属性进行访问、又可以对属性进行更改的,那么安全从哪里来呢?

安全从何而来?

我仔细研读了代码,发现:我的方法怎么才一行,做到了我想要的事。我可不可以在方法上多加一点,让我做的东西更全面呢?
这仿佛让我一下子打开了灵感的大门,如果我在做更改做返回数据前,加一些判断,让不符合条件的东西就不能达到想要的效果。
这样岂不是达到了安全的目的了吗?

加判断,让安全产生

class Pig{
	private int weight;	//猪的体重

	public int getWeight(){
		return this.weight;
	} 
	public void setWeight(int newWeight){
		if(newWeight>0 && newWeight<1000){
			this.weight = newWeight;
		}else if(newWeight<=0){
			//或者抛异常		
			System.out.println("对不起,没有这么轻的猪");
			System.out.println("请检查程序");	
		}else{
			//或者抛异常		
			System.out.println("对不起,没有这么重的猪");
			System.out.println("请检查程序");	
		}
	}
}

每一次控制都在我的条件掌控范围内。
如此一来,我的对象的属性就安全了,如果再有什么bug就继续多加if分支。
get方法也同此,可以加一些判断,这样,get成功不成功,也在我的掌握之内了。
回顾之前的东西,之前如果属性是public共有,那属性将完全暴露,而属性变成私有时,你就可以随意的添加一些条件,来让你的属性更加安全。public却不能添加任何条件
这样一来,private私有就体现出它的作用和优势来了。


这应该算是一种狭义意义上的封装的思想了



至此,分享结束。

感谢阅读。

欢迎交流。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值