您的位置:首页 > 编程语言 > Java开发

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

哪种简单就不用我说了吧

封装的优势在于复用代码,安全性,隐私性等

版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: