Java超详细介绍封装与访问控制修符
概念:我们在写入一个类的时候,为了保护里边的属性不被随意的调用这是我们可以使用特殊的修饰符进行相应的保护,而这样的话我们似乎只能在该类中调用使用了,出现某些特殊情况时就会无法发调用,虽然挺高了安全性但也降低了灵活性,这个时候我们的包装类就出现了,我们通过对某个方法的进行特殊方法的包装来对其进行相应的调用与赋值。就相当于银行为了保护财产会选择将金钱放进保险柜中来确保其的安全,但是当我们要取钱时,银行就要拿钥匙打开保险柜。修饰符相当于银行的保险柜,封装相当于保险柜的钥匙。
访问修饰符如下:
1) public 公共控制修饰符
2) protected 保护访问控制修饰符
3) default 缺省默认控制修饰符
4) private 私有访问控制符
它们的访问权限如下图:
包装的特点:
1)便于正确使用系统,防止错误修改属性
2)有助于系统之间的松耦合,提高系独立性
3)提高软件的重用性
4)降低了构建大型系统的风险
包装的快捷键:
大部分的编译软件都有相应的包装快捷键就例如我用的开发工具idea就像相对应的get()set()有参无参构造方法如下图
我们右键单击后会出现相应选项我们点击Generate,也有相应的快捷键Alt+Insert直接打开Generate
进入Generate后我们选择Constructor
该选项是选择无参和有参构造的,我们全选点击OK即可将所有的私有属性进行有参构造,点击
Select None则是进行无参构造
再次进入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;
}
}
运行结果如下:
到此这篇关于Java超详细介绍封装与访问控制修符的文章就介绍到这了,更多相关Java封装内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341