Java 三大特征之封装

本文旨在记录作者学习 Java 的过程。

封装,字面上可以理解为『包装』的意思,换句话说隐藏信息,是指利用抽象的数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在了抽象数据类型的内部,尽可能的隐藏内部细节,只保留一些对外接口使之与外部发生联系。

使用封装的几点好处:

1. 降低耦合度;

2. 类内部的结构可以自由修改;

3. 对成员进行更精准的控制;

4. 隐藏信息

下面我们通过代码来具体说明封装的应用场景。

首先来看一段简单的代码:

package hello;

class People {
	String name = "zhangsan";
	int age = 30;
}

public class Demo01 {

	public static void main(String[] args) {
		People person = new People();
		person.age = 500;
		person.name = "lisi";
		System.out.println("Name: " + person.name + " " + "Age: " + person.age );
	}

}

我们定义了一个 People 类,接下来通过 main 函数中实例化了一个 People 对象,可以注意到,我们通过 person.age 和 person.name 直接修改了其属性,程序输出:

Name: lisi Age: 500

程序虽然正常输出,但是我们注意到正常情况下一个人的年龄怎么会是 500 岁呢?

因此我们需要在修改对象属性时附加限定条件,不希望将对象的属性直接暴露在外,并且提供一些可以被外界访问对象属性的方法。此时我们可以使用关键字 private,如下:

class People {
	private String name = "zhangsan";
	private int age = 30;
} 

我们将 People 中的 name 和 age 属性前添加了关键字 private,这表示,这个属性只允许内部使用。

那么如果访问这些属性呢?

通过 setattr 和 getattr 对属性进行赋值和取值,如下:

class People {
	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;
	}
	private String name = "zhangsan";
	private int age = 30;
}  

我们在 class People 中实现了 getName、 setName、 getAge 和 setAge 方法,通过这些方法对类中的属性进行访问。

如下:

package hello;

class People {
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		if (age <= 0 || age >= 200) {
			this.age = 100;
			return;
		}
		this.age = age;
	}
	private String name = "zhangsan";
	private int age = 30;
}

public class Demo01 {

	public static void main(String[] args) {
		People person = new People();
		person.setAge(500);
		person.setName("lisi");
		System.out.println("Name: " + person.getName() + " " + "Age: " + person.getAge() );
	}

}

因此我们可以通过上述的 setAge 和 setName 方法进行限制操作。

转载于:https://www.cnblogs.com/changzhi/p/6736197.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值