掌握目標:
1.掌握封裝的目的。
2.掌握封裝實現。
3.掌握setter和getter的封裝方法。
首先我們來了解爲什麼要封裝程序。
封裝程序實際上就是把一些代碼給隱藏,在外部不可見,在內部自行處理。
就如人體機構一樣,人的內臟是不可見的。但是在內部自我運轉處理。
我們來看一段代碼
class Person
{
String name;
int age;
public void tell(){
System.out.print("姓名:"+name+"年齡:"+age);
}
}
public class Oor
{
public static void main(String args[]){
Person per =new Person();
per.name ="張三";
per.age=-30;
per.tell();
}
};
這段代碼實際上在語法上是沒有問題的,但是這段代碼是不符合規定的。爲什麼呢?我們來看一下年齡是負數。有誰的年齡是負數啊。所以本段代碼的問題在於年齡的值上。而且此段代碼外部可以直接訪問。接下來我們要給它進行封裝並解決這些不合格的問題。
我們如何實現封裝呢?
我們來看一下封裝的方式:
使用private 的方式來封裝屬性。
使用private的方式來封裝方法。
具體怎麼使用,我們來看一下:
爲屬性封裝:private 屬性類型 屬性名稱;
爲方法封裝:private 方法返回值 方法名稱{參數列表};{}
看下面一組代碼:
class Person
{
private String name;
private int age;
public void tell(){
System.out.print("姓名:"+name+"年齡:"+age);
}
}
public class Oor
{
public static void main(String args[]){
Person per =new Person();
per.name ="張三";
per.age=-30;
per.tell();
}
};
在這裏我們封裝了兩個屬性。那麼我們編譯看一下,大家會看到出錯。這個是因爲程序封裝起來了,私有化了。意味着不能夠被外部調用,那怎麼辦?接下來我們講解的是訪問封裝內容。如果我們要訪問封裝的內容,我們就要使用setter 和getter,簡單的來說就是set 和get。
class Person
{
private String name; //封裝String 類型 的name
private int age; //封裝int類型的age
public void tell(){ //聲明方法
System.out.println("姓名:"+name+"年齡:"+age);//方法輸出姓名,年齡;
}
public String getName(){ //取得名字
return name; //返回name
}
public void setName(String n){
name = n ;
}
public int getAge(){
return age;
}
public void setAge(int a){
age =a ;
}
}
public class Oor{
public static void main(String arsgh[]){
Person per =new Person();
per.setName("張三");
per.setAge(-30);
per.tell();
}
}
注意看上面的註釋如何使用setter 和getter。
那麼我們在年齡上如果說賦值是負數,那麼這個語法就是錯誤的。人不可能有負數的年齡是吧。所以我們在年齡的賦值上做一條檢查,我們就使用與或非語句:
使用if語句進行判斷輸出
public void setAge(int a){
if(a>0&&a<100){
age = a
}
}