3

【Java面向对象】封装的认识与实现

 1 year ago
source link: https://blog.51cto.com/u_15773567/5692613
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

封装的初步认识

Q:什么是封装

A: 封装(Encapsulation)就是把抽象出来的数据(属性)和对数据的处理方式封装在一起。 封装可以被认为是一个保护屏障,可以把数据保存在内部,要访问里面的代码和数据,必须通过严格的接口控制。

Q:封装有什么好处

A: 1)封装可以隐藏实现的细节。 2)封装可以提高代码的安全性和复用性。 3)封装类内部实现可以任意修改,不影响其他类。

Q:如何实现封装

A:封装实现三步法

第一步:创建类,将属性进行私有化(一般限制为private),也就是不能直接修改属性。

第二步:提供一个公共的(pubilc) ​​set​​ 方法,用于对属性判断并赋值。

第三步:提供一个公共的(pubilc) ​​get​​ 方法,用于获取属性的值。

封装的实现过程

我们通过一个案例来了解封装,试一试实现封装:

第一步:创建类,将属性进行私有化。 我们创建一个类 ​​Person​​ ,在类中有一个私有化的年龄属性。

class Person {
private int age;//年龄
}

第二步:提供一个公共的(pubilc) ​​set​​ 方法,用于对属性判断并赋值。 人的年龄应该有一定的限制,不能随便填一个数字,比如几百,几千。为了符合常理,我们可以将年龄设置在 ​​0~120​​ 岁之间。若不符合条件,我们将他设为默认值。

class Person {
private int age;//年龄

//提供一个处理年龄的方法
public void setAge(int age) {
if(age >=1 && age <=120) {
this.age = age;
} else {
System.out.println("年龄不符合常理,默认为18");
this.age = 18;//将年龄设为默认值 18
}
}
}

第三步:提供一个公共的(pubilc) ​​get​​ 方法,用于获取属性的值。

class Person {
private int age;//年龄

//提供一个处理年龄的方法
public void setAge(int age) {
if(age >=1 && age <=120) {
this.age = age;
} else {
System.out.println("年龄不符合常理,默认为18");
this.age = 18;//将年龄设为默认值 18
}
}
//提供一个返回年龄的方法
public int getAge() {
return age;
}
}

封装的演示

public class Encapsulation {
public static void main(String[] args){
Person personA = new Person();
Person personB = new Person();
personA.setAge(300);
System.out.println(personA.getAge());
personB.setAge(30);
System.out.println(personB.getAge());
}
}

class Person {
private int age;//年龄

//提供一个处理年龄的方法
public void setAge(int age) {
if(age >=1 && age <=120) {
this.age = age;
} else {
System.out.println("年龄不符合常理,默认为18");
this.age = 18;//将年龄设为默认值 18
}
}
//提供一个返回年龄的方法
public int getAge() {
return age;
}
}
【Java面向对象】封装的认识与实现_数据

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK