Java类的封装
封装的特点:
只能通过规定的方法访问数据。
隐藏类的实例细节,方便修改和实现。
实现封装的具体步骤如下:
修改属性的可见性来限制对属性的访问,一般设为 private。
为每个属性创建一对赋值(setter)方法和取值(getter)方法,一般设为 public,用于属性的读写。
在赋值和取值方法中,加入属性控制语句(对属性值的法性进行判断)。
例 1
下面以一个员工类的封装为例介绍封装过程。一个员工的主要属性有姓名、年龄、联系电话和家庭住址。假设员工类为 Employee,示例如下:
如上述代码所示,使用 private 关键字修饰属性,这就意味着除了 Employee 类本身外,其他任何类都不可以访问这些属性。但是,可以通过这些属性的 set x() 方法来对其进行赋值,通过 get x() 方法来访问这些属性。public class Employee {
private String name; // 姓名
private int age; // 年龄
private String phone; // 联系电话
private String address; // 家庭住址
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 < 18 || age > 40) {
System.out.println("年龄必须在18到40之间!");
this.age = 20; // 默认年龄
} else {
this.age = age;
}
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
在 age 属性的 setAge() 方法中,首先对用户传递过来的参数 age 进行判断,如果 age 的值不在 18 到 40 之间,则将 Employee 类的 age 属性值设置为 20,否则为传递过来的参数值。
编写测试类 EmployeeTest,在该类的 main() 方法中调用 Employee 属性的 set x() 方法对其相应的属性进行赋值,并调用 get x() 方法访问属性,代码如下:
public class EmployeeTest {
public static void main(String[] args) {
Employee people = new Employee();
people.setName("王丽丽");
people.setAge(35);
people.setPhone("");
people.setAddress("河北省石家庄市");
System.out.println("姓名:" + people.getName());
System.out.println("年龄:" + people.getAge());
System.out.println("电话:" + people.getPhone());
System.out.println("家庭住址:" + people.getAddress());
}
}
运行该示例,输出结果如下:
姓名:王丽丽
年龄:35
电话:
家庭住址:河北省石家庄市
通过封装,实现了对属性的数据访问限制,满足了年龄的条件。在属性的赋值方法中可以对属性进行限制操作,从而给类中的属性赋予理的值, 并通过取值方法获取类中属性的值(也可以直接调用类中的属性名称来获取属性值)。
- 随机文章
- 北京 马尔代夫 直飞(北京到马尔代夫直飞,一次梦幻之旅)
- 马尔代夫朱在明(马尔代夫前总统朱在明被判监禁15年)
- 马尔代夫主要城市(马尔代夫主要城市:探访仙境般的马累 重写标题:探访马尔代夫首都马累)
- 中国 马尔代夫 航线(中国至马尔代夫直达航线将重启)
- 重庆堪称马尔代夫(重庆竟然有和马尔代夫一样美的地方?- 重写后的新标题)
- 富川虎头马尔代夫(富川虎头马尔代夫:极致奢华旅游胜地)
- 宜昌马尔代夫地图(快速了解宜昌一日游马尔代夫岛屿地图)
- 国足客场马尔代夫(国足客场挑战马尔代夫,实现必胜之旅)
- 马尔代夫飞机带狗(狗随旅客登机,马尔代夫航班引争议)
- 英国离马尔代夫(英国放宽马尔代夫旅行限制)
- 旺苍马尔代夫拍照(旺苍风景怡人,马尔代夫拍照美轮美奂)
- 梁山水泊马尔代夫(梁山水泊的后花园:细数马尔代夫之旅)
- 黄磊 马尔代夫(黄磊马尔代夫度假风光无限)
- 有组团去马尔代夫(马尔代夫之旅,邀请小伙伴们一起来!)
- 安庆马尔代夫攻略(安徽最美马尔代夫岛攻略,快来了解!)
- 沙特 马尔代夫(沙特与马尔代夫就合作项目达成协议)
- 熟女马尔代夫外拍(熟女风情万种,马尔代夫私拍大片曝光)
- 亚洲 马尔代夫(美丽的马尔代夫——亚洲小岛上的天堂)
- 济宁 马尔代夫(济宁市民能够在马尔代夫度假了!)
- 马尔代夫骑车视频(魅力马尔代夫:骑车探索美丽风光!)
- 眉山马尔代夫风景(眉山美不输马尔代夫,盘点眉山美景!)
- 郑州马尔代夫美景(惊艳!郑州市区竟有“马尔代夫”美景)
- 马尔代夫上空俯瞰(马尔代夫美景:游客在飞机上俯瞰上空)
- 马尔代夫下水游泳(马尔代夫浮潜:与海豚同游的惊喜之旅)
- 法国马尔代夫疫情(法国马尔代夫爆发疫情,旅游业受重创)
- 马尔代夫主场条件(马尔代夫主场优势显著,历史战绩惊人)
- 美丽马尔代夫视频(美丽马尔代夫:令人神往的海底世界。)
- 陈乔恩和马尔代夫(陈乔恩在马尔代夫度假的美照惊艳亮相)
- 越南马尔代夫照片(惊艳!越南竟现仿佛马尔代夫般的美景)
- 搓麻 马尔代夫(马尔代夫风光无限,旅游新体验在搓麻游戏中!)
