Java封装属于面向对象的三大特征之一,本篇我们重点详解Java封装的定义、优点、实现与示例。
Java封装定义
Java封装从字面上来理解就是包装的意思,是将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。
数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,也就是说用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。
一句话总结:封装=私有化属性+公共调用属性的方法。
Java封装作用
使用封装有四大好处:
1、高内聚:封装细节,便于修改内部代码,提高可维护性;
2、低耦合:简化外部调用,便于调用者使用,便于扩展和协作;
3、安全性:提高代码的安全性,隐藏细节实现;
4、复用性:提高代码的复用性。
Java封装实现
Java是使用“访问控制符”来控制哪些细节需要封装,类的访问控制符只能是空或者 public,方法和属性的访问控制符有 4 个,分别是 public、 private、protected 和 friendly。
访问控制修饰符的权限,如下表所示:
上图说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。
Java中的封装是使用访问修饰符private 、protected和public实现的。
Java封装示例
public class Cat { private String name; private String type; private int age; public Cat(){ } //定义有参构造,方便实例化对象时,初始化值 public Cat(String name, String type, int age) { this.name = name; this.type = type; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } //type(品种)属性只可以读取,不可以写入 public String getType() { return type; } public int getAge() { return age; } public void setAge(int age) { if(age<0||age>20){ System.out.println("猫的年龄输入有误,请检查后重新输入!!!!"); return; } this.age = age; } public void showInfo(){ System.out.println("猫的名字为: "+name+" 猫的品种为: "+type+" 猫的年龄为: "+age); } } public static void main(String[] args) { //猫的品种一经出生,就不能修改了,但是我这边还是可以通过对象名.属性名的方式去修改 Cat cat=new Cat("叮当","狸花猫",8); System.out.println("一年前: "); cat.showInfo(); cat.setName("小梦"); System.out.println("获取猫的品种: "+cat.getType()); cat.setAge(9); System.out.println("一年后: "); cat.showInfo(); }
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》