概念:我们在写入一个类的时候,为了保护里边的属性不被随意的调用这是我们可以使用特殊的修饰符进行相应的保护,而这样的话我们似乎只能在该类中调用使用了,出现某些特殊情况时就会无法发调用,虽然挺高了安全性但也降低了灵活性,这个时候我们的包装类就出现了,我们通过对某个方法的进行特殊方法的包装来对其进行相应的调用与赋值。就相当于银行为了保护财产会选择将金钱放进保险柜中来确保其的安全,但是当我们要取钱时,银行就要拿钥匙打开保险柜。修饰符相当于银行的保险柜,封装相当于保险柜的钥匙。
访问修饰符如下:
1) public 公共控制修饰符
2) protected 保护访问控制修饰符
3) default 缺省默认控制修饰符
4) private 私有访问控制符
它们的访问权限如下图:
文章图片
包装的特点:1)便于正确使用系统,防止错误修改属性
2)有助于系统之间的松耦合,提高系独立性
3)提高软件的重用性
4)降低了构建大型系统的风险
包装的快捷键:
大部分的编译软件都有相应的包装快捷键就例如我用的开发工具idea就像相对应的get()set()有参无参构造方法如下图
我们右键单击后会出现相应选项我们点击Generate,也有相应的快捷键Alt+Insert直接打开Generate
文章图片
进入Generate后我们选择Constructor
文章图片
该选项是选择无参和有参构造的,我们全选点击OK即可将所有的私有属性进行有参构造,点击
Select None则是进行无参构造
文章图片
【JAVA|JAVA面向对象——封装与访问控制修符】再次进入Generate后我们选择Getter and Setter
文章图片
该选项是构造方法引入和修改私有属性,Getter()表示获属性,Setter()表示修改属性,进入后我们全选点击OK,就可以进行构造。
文章图片
测试类代码如下:
package com.ytzl.total;
/*封装类*/
public class test {
public static void main(String[] args) {
//实例化一个对象
encapsulation encapsulation = new encapsulation();
System.out.println("通过封装方法获取封装类中的私有属性==>"+encapsulation.getA());
System.out.println("通过封装方法获取封装类中的私有属性==>"+encapsulation.getB());
//我们也可以通过相应的构造方法来改变风种类中的私有属性
encapsulation.setA(20);
encapsulation.setB("被是同相应的构造方法进行改变");
System.out.println("通过封装方法获取封装类中的私有属性==>"+encapsulation.getA());
System.out.println("通过封装方法获取封装类中的私有属性==>"+encapsulation.getB());
//我们也可以通过封装方法来改变封装类中的私有属性
encapsulation encapsulation1 = new encapsulation(10,"被调用方法改变后");
System.out.println("通过调用方法类来改变封装类中的私有属性后==>"+encapsulation1.getA());
System.out.println("通过调用方法类来改变封装类中的私有属性后==>"+encapsulation1.getB());
}
}
实体类代码如下:
package com.ytzl.total;
public class encapsulation {
private int a=8;
private String b="私有属性";
public encapsulation() {
}//如果需要在调用方法中改变私有属性需要调用该有参方法
public encapsulation(int a, String b) {
this.a = a;
this.b = b;
}public int getA() {
return a;
}public void setA(int a) {
this.a = a;
}public String getB() {
return b;
}public void setB(String b) {
this.b = b;
}
}
运行结果如下:
文章图片
推荐阅读
- 面经|22天试水Java社招,历经“华为、蚂蚁、字节跳动、PDD”等六家
- JAVA|(七)SpringCloud系列——流量控制组件Sentinel实战
- 使用Jprofiler分析jvm
- redis|SSMR(Redis配置)
- 笔记|消息队列原理及选型
- JavaEE初阶|计算机网络 - IP协议
- spring|使用这个算法我可以实现英雄联盟里英雄的走位|Java 开发实战
- Andriod|Andriod Studio实现保存QQ密码
- 如何解决Spring Boot内存泄漏问题