Java的封装性
一. 封装的含义
封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。
二. 封装的作用
封装的作用在于保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改。
三. 封装的方法
类的封装,就是将类中的属性私有化,即用private关键字来修饰
。私有属性只能在它所在的类中被访问。
如果外界想要访问私有属性,需要提供一些使用public修饰的公有方法。其中包括用于获取属性值的get方法和设置属性值的set方法 。
几种权限修饰符
private:私有权限,只能在定义的类中访问,在其他类中创建的实例均无法访问
默认:同包可访问权限,在没有声明权限修饰符时为默认权限,允许在同包的其他类访问
protected:受保护权限,允许有继承关系的子类访问
public:公共权限,允许任何类访问
// 定义变量
[修饰符] 变量类型 变量名称;
[修饰符] 变量类型 变量名称 = 初始值;
按照以下步骤对属性进行封装:
使用权限修饰符:
- 使用private作用在属性上,关闭直接访问的入口
- 使用public作用在方法上,提供调用的入口
定义与属性存取相关的方法
- get代表取用:既然是取值,那么就要把属性值进行返回,方法的返回值类型与属性类型相同
- set代表存储:既然是存值,那么就要在参数列表中接收想要存入的值,类型与属性类型相同
- 未封装示例
package com.myJava.Person1;
class Person1{
// 将成员的访问权限设置为 public,这也为意味这谁都访问到它
public String name;
public int age;
}
public class TestPerson1{
public static void main(String[] args) {
Person1 person = new Person1();
//通过类,我们可以直接操作成员变量
person.name ="LeBron";
person.age = 37;
//直接获得成员变量的值
System.out.println(person.name+"-"+person.age);
}
}
LeBron-37
对该类进行封装:
package com.myJava.Person1;
class Person2 {
//将成员变量私有化,这样一来外部就不能直接访问到它们
private String name;
private int age;
//提供公共的方法来操作成员变量
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 class TestPerson2 {
public static void main(String[] args) {
Person2 person = new Person2();
// 不能直接访问成员变量,而是通过提供的公共方法来设置/获取成员变量的值
person.setName("LeBron");
person.setAge(37);
System.out.println(person.getName() + "-" + person.getAge());
}
}
LeBron-37