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

目录

目录

封装

1.1访问限定符

1.2封装介绍

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

总结



封装

1.1访问限定符

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

 但业务需自己添加。

总结

 

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

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值