I学霸官方免费教程十三:Java面向对象三大特性之封装
2015-08-10 18:17
288 查看
面向对象的三大特性
封装
将数据(属性)和功能(方法)包装在一起,形成一个不可分割的整体。对使用者提供访问的接口(方法的调用)另一种简单的说法是,将属性私有化,对外提供公共的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
哪种简单就不用我说了吧
封装的优势在于复用代码,安全性,隐私性等
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- 停止Java线程,小心interrupt()方法
- 智渔课堂官方免费教程十二:Java基础之内部类
- I学霸官方免费教程十二:Java基础之内部类
- Spring Data Jpa 详解 (配置篇)
- 关于JAVA中集合对象的编辑
- Mockito:一个强大的用于Java开发的模拟测试框架
- eclipse不联想提示问题
- Struts2数据封装机制
- 智渔课堂官方免费教程十一:Java基础之访问权限
- I学霸官方免费教程十一:Java基础之访问权限
- Java中final关键字详解
- java 之 IO
- 智渔课堂官方免费教程十:Java基础之关键字static和this
- I学霸官方免费教程十:Java基础之关键字static和this
- spring mvc 获取前端提交的表单
- 遍历单向LinkedList的两种方法
- 智渔课堂官方免费教程九:Java基础之成员变量(全局变量)和局部变量
- Eclipse添加servlet-api.jar库的引用
- I学霸官方免费教程九:Java基础之成员变量(全局变量)和局部变量
- 智渔课堂官方免费教程八:Java基础之方法(函数)