Java程序面向对象之封装

众所周知,面向对象编程有三大特性,即封装、继承、多态

封装(encapsulation)概念

封装就是将类中的属性、数据等包围起来,让外部无法对其进行非法修改。
通俗的说,就是将自己的东西藏在保险箱中,让别人没法随意的拿到。

Talk is cheap, show me code.
public class People {
	String name;
	int age;
	String gender;
}

我们写一个类,如果没有对其属性进行封装处理,那么我们可以随意对其进行修改

public class Test {
	
	public static void main(String[] args) {
		People people = new People();
		people.name = "小猪";
		people.age = 18;
		people.gender = "男";
		
		System.out.println(people.name);
		System.out.println(people.age);
		System.out.println(people.gender);
	}

}

输出:

小猪
18

虽然这样我们可以很方便的对其属性进行复制,但这样我们的数据是不安全的。因为当程序代码量逐渐增加,我们很难知道什么时候对这个属性进行了什么样的操作;或者说到最后该属性的值不是我们预期想要的。所以对属性的封装就成为了必要的事。那么封装是怎样实现的?

Show you code!!!
public class People {
	private String name;
	private int age;
	private String gender;
	

}

当我们对属性增加一个private则会出现一下情况
在这里插入图片描述
The field People.age is not visible:People.age这个字段不可见错误

既然出错了,那么怎么我想修改这个属性的值要怎么做呢?

Show you code!!!
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

如上:对一个私有属性定义一对公有的方法,这些方法是对外暴露的,所以我们可以通过这些方法对这些属性的值进行修改

public class Test {
	
	public static void main(String[] args) {
		People people = new People();

		people.setAge(18);
		people.setName("小猪");
		people.setGender("男");
		
		String name = people.getName();
		int age = people.getAge();
		String gender = people.getGender();
		
		System.out.println(name);
		System.out.println(age);
		System.out.println(gender);
	}

}

运行结果:

小猪
18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值