智渔课堂官方免费教程十三: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
哪种简单就不用我说了吧

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章