I学霸官方免费教程十三:Java面向对象三大特性之封装
面向对象的三大特性
封装
将数据(属性)和功能(方法)包装在一起,形成一个不可分割的整体。对使用者提供访问的接口(方法的调用)
另一种简单的说法是,将属性私有化,对外提供公共的getter和setter方法
使用封装的优势:安全(屏蔽非法操作,隐藏类的实现细节)
实例: package characteristic.encapsulation; /** * 用于演示封装 * 类中封装了属性和方法 * @author 学霸联盟 - 赵灿 */ public class Person { //私有的属性年龄 private int privateAge; //公共的属性年龄,用于和私有年龄做对比 public int publicAge; //设置私有年龄,该方法对属性privateAge进行了封装 public void setPrivateAge(int age) { if(age < 0){ System.out.println("输入的年龄有误!"); } else { privateAge = age; } } //获取私有的年龄 public int getPrivateAge() { return privateAge; } } package characteristic.encapsulation; /** * 测试封装 * @author 学霸联盟 - 赵灿 */ public class Test { public static void main(String[] args) { //创建Person类的对象 Person p = new Person(); //设置公有的年龄 p.publicAge = -1; //输出公有的年龄 System.out.println("公有的年龄:" + p.publicAge); //设置私有的年龄 p.setPrivateAge(-1); //输出私有的年龄 System.out.println("私有的年龄:" + p.getPrivateAge()); } } 运行结果: 公有的年龄:-1 输入的年龄有误! 私有的年龄:18
其实方法也可以看成类内部的一种封装,将事项某个功能的一些列代码封装到一个方法中,方法名就是方法提供给外界使用的接口。这样就实现了代码的复用(重复的使用),当有多处需要同样功能代码的时候,就可以重复的调用这一方法
/** * 演示输出人员的姓名和年龄信息 * @author 学霸联盟 - 赵灿 */ public class Demo { public static void main(String[] args) { Person p1 = new Person("张三", 18); Person p2 = new Person("李四", 20); /**************** 方式一:直接输出两个对象的姓名的年龄 *******************/ System.out.println("----------方式一----------"); System.out.println("姓名:" + p1.name + " 年龄:" + p1.age); System.out.println("姓名:" + p2.name + " 年龄:" + p2.age); /**************** 方式二:调用输出信息的方法输出两个对象的姓名和年龄 *******************/ System.out.println("----------方式二----------"); p1.printInfo(); p2.printInfo(); } } class Person { String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } public void printInfo() { System.out.println("姓名:" + name + " 年龄:" + age); } } 运行结果: ----------方式一---------- 姓名:张三 年龄:18 姓名:李四 年龄:20 ----------方式二---------- 姓名:张三 年龄:18 姓名:李四 年龄:20
哪种简单就不用我说了吧
封装的优势在于复用代码,安全性,隐私性等
版权声明:本文为博主原创文章,未经博主允许不得转载。