java學習(八)面向對象特徵之封裝和調用

java學習(八)面向對象特徵之封裝和調用

封裝:是面向對象的三大特徵之一,作用有兩個

  • 保證內部結構安全

  • 屏蔽複雜,暴露簡單

封裝從代碼級別來看有啥用?

  • 對於代碼調用的人來說,不需要關心代碼的複雜實現,只需要通過簡單的入口就可以訪問了

  • 在類體裏的重要數據可以封裝起來,讓外部人員不能隨意訪問,保證數據安全性

複習一下方法的定義

【修飾符列表】返回值類型 方法名(參數列表){}

修飾符列表一般爲public static,但是也有不帶static的實例方法(對象方法)

有static的方法和沒有static的方法怎麼調用?

  • 有static的方法是靜態方法,使用類名.方法名();調用即可, 如果在當前類中,類名也可以省略直接:方法名();

  • 沒有static的方法稱爲實例方法,就是對象級別的方法。需要先new對象然後引用.方法();

  • 就是實例對象、實例方法調用都需要new對象去調用

代碼

public class MethodTest{
    public static void main(String[] args){
​
        //類名.方法名();調用
        MethodTest.doSome();
​
        //省略類名直接調用
        doSome();
​
        MethodTest m1 = new MethodTest();
​
        //引用.方法名();纔可以調用無static的方法
        m1.doOther();
    }
​
    //定義一個有static的方法
    public static void doSome(){
        System.out.println("doSome執行");
    }
​
    //定義一個無static的方法
    public void doOther(){
        System.out.println("doOther執行");
    }
}

怎麼封裝?

  • 私有化 private關鍵字

    • private關鍵字聲明後,變量只能在當前類調用

  • 提供對外開放的入口

封裝get和set方法讀取和修改

  • 這樣的方法定義的時候不能使用 static 關鍵字修飾,被稱爲實例方法 :set 和 get 方法訪問的都是某個具體對象的屬性, 不同的對象調用 get 方法獲取的屬性值不同,所以 set 和 get 方法必須有對象的存在才能調用。

  • 對象級別的 方法,不能直接採用“類名”調用,必須先創建對象,再通過“引用”去訪問。

  • get方法要求:public 返回值類型 get + 屬性名首字母大寫(){

    ​ return;

    }

  • set 方法規範中要求是 public void set + 屬性名首字母大寫(一個參數){

    ​ xxx = 一個參數;

    }

public class Person{
​
    //封裝,提供一個get和一個set接口
    private int age;
    
    //get方法
    public int getAge(){
        return age;
    }   
​
    //set方法
    public void setAge(int nianLing){
        if (nianLing<0 ||nianLing>150){
            System.out.println("您輸入的年齡值不合法!請您重新賦值");
            return;  //只要有return語句執行,當前所在方法就結束
        }
        System.out.println("年齡合法纔會執行這裏------------------------------");
        age = nianLing;
    }
}
​

調用

public class PersonTest02{
    public static void main(String[] args){
​
        Person p1 = new Person();
​
        //int nianLing = p1.getAge();
​
        //System.out.println(nianLing);  //0
​
        p1.setAge(188);
​
        //System.out.println(p1.getAge());  //0
​
        p1.setAge(18);
        //System.out.println(p1.getAge());  //18
​
        p1.setAge(108);
        //System.out.println(p1.getAge());  //108
    //注:如果setAge時,傳的變量不符合要求,return;執行,整個方法會結束。【該方法】後面的代碼就執行不到
    }
}

 

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