面向对象程序三大特性一:封装(超详细)

目录

目录

封装

1.1访问限定符

1.2封装介绍

1.3封装的实现步骤 (三步)

总结



封装

1.1访问限定符

Java 中主要通过类和访问权限来实现封装:  类可以将数据以及封装数据的方法结合在一起,,而访问权限用来控制方法或者字段能否直接在类外使用 
介绍封装之前我们必须对 访问限定符有所了解。
Java 中提供了四种访问限定符:
范围 private default protectd public
1 同一包中的同一类 yes yes yes yes
2 同一包中不的同类 yes yes yes
3 不同包中的子类 yes yes
4 不同包中的非子类 yes

ps:default权限指:什么都不写时的默认权限 .

(yes表示在该范围内可以被访问)
我们就通过访问限定符来限制类中的成员不被外界所访问。

1.2封装介绍

封装(encapsulation)就是把抽象出的数据[属性]和对数据的操作[方法]封装在一起,数据被保护在内部,程序的其他部分只有通过被授权的操作|方法],才能对数据进行操作。

从语法上来说,就是被private修饰的属性和方法只能在当前的类中使用。

1.3封装的实现步骤 (三步)

(1)将属性进行私有化private 。(为了不能直接修改属性)

(2)提供一个公共的(public)set方法

(3)提供个公共的(public)get方法

 使用案例:

题目:

人的姓名可以查看,但不能随便查看人的年龄 , 工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认 年龄, 必须在 1-120, 年龄, 工资不能直接查看 , name 的长度在 2-6 字符 之间。
请写一个封装的人的类。
class Person {
public String name;//名字公开
private int age;//年龄私有化
private double salary;//工资私有化

//空构造器
public Person() {

}
//有三个属性的构造器
public Person(String name, int age, double salary) {
setName(name);
setAge(age);
setSalary(salary);
}

//然后根据要求来完善我们的代码.
 public String getName() {
 return name;
}

public void setName(String name) {
//加入对数据的校验,相当于增加了业务逻辑
if(name.length() >= 2 && name.length() <=6 ) {
this.name = name;
}else {
System.out.println("名字的长度不对,需要(2-6)个字符,默认名字");
this.name = "无名人";
}
}

public int getAge() {
return age;
}

public void setAge(int age) {
//判断
if(age >= 1 && age <= 120) {//如果是合理范围
this.age = age;
} else {
System.out.println("你设置年龄不对,需要在 (1-120), 给默认年龄 18 ");
this.age = 18;//给一个默认年龄
}
}

public double getSalary() {
//可以这里增加对当前对象的权限判断
return salary;
}

public void setSalary(double salary) {
this.salary = salary;
}

//写一个方法,返回属性信息
public String info() {
return "信息为 name=" + name + " age=" + age + " 薪水=" + salary;
}
}
自己写 setXxx getXxx 太慢.
(1)我们使用快捷键(alt+insert)
(2)通过鼠标
1

面向对象程序三大特性一:封装(超详细)_第1张图片

 但业务需自己添加。

总结

面向对象程序三大特性一:封装(超详细)_第2张图片

 

以上为我个人的小分享,如有问题,欢迎讨论!!! 
都看到这了,不如关注一下,给个免费的赞

面向对象程序三大特性一:封装(超详细)_第3张图片

你可能感兴趣的:(java,其他,经验分享)