智漁課堂官方免費教程十三: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
哪種簡單就不用我說了吧

封裝的優勢在於複用代碼,安全性,隱私性等

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