java 面向物件特性之一:封裝性
阿新 • • 發佈:2021-01-12
技術標籤:# 4.6 Javajava封裝
一、為什麼要使用封裝性:
當我們建立物件以後,就可以通過物件名.屬性名的方式對屬性進行賦值。這種方式預設只能對內容的型別和範圍進行約束。
但是在實際開發中往往我們還會有更多的限制條件,但這些限制條件無法在屬性的宣告處加以限制。所以我們採取如下方式
- 使用private修飾屬性,這樣就不能直接再使用物件名.屬性名的方式進行賦值了
- 提供公共的方法給屬性賦值和獲取屬性的值,這樣可以在方法中對賦值的內容加以限制。
二、封裝性的體現(狹義上)
- 私有化屬性,提供公共的set/get方法
三、封裝性的體現(廣義上)
- 四種許可權修飾符 :private 預設的 protected public
- 可以使用四種許可權修飾符修飾 : 屬性,方法,構造器,內部類。
- 類只能使用public和預設的修飾。
四、注意
- set/get方法就是普通方法。如果開心可以起任意名字
class Animal{
String name;
private int age;
/*
* 哥們我求求你傳值就傳4
*/
private int legs;
/**
* 獲取age的值
*/
public int getAge(){
return age;
}
/**
* 給age賦值
* @param a
*/
public void setAge(int a){
if (a <= 0){
System.out.println("年紀不合法");
age = 10;
}else{
age = a;
}
}
/**
* 獲取屬性的值
* @return
*/
public int getLegs(){
return legs;
}
/**
* 給屬性賦值 - 習慣性的把設定給屬性內容的方法叫作 setXxx ,獲取屬性值的方法叫作getXxx
*
* 以後只要提setXxx和getXxx就去給屬性賦值和獲取屬性值的方法。(都是普通方法)
* @param l
*/
public void setLegs(int l){
if(l != 4){
System.out.println("你給我去死");
//賦值一個預設值
legs = 4;
/*
* 如果輸入的值不在合理的範圍內
* 1.給設定一個預設值
* 2.拋異常強制終止程式
*/
}else{
legs = l;
}
}
public void info(){
System.out.println("name=" + name + " age=" + age + " legs=" + legs);
}
}
public class AnimalTest {
public static void main(String[] args) {
Animal animal = new Animal();
//給屬性賦值
animal.name = null;
// animal.age = 2;
animal.setAge(-2);
// animal.legs = -4;
animal.setLegs(-4);
animal.info();
System.out.println("程式結束");
}
}
執行結果: