首頁>技術>

面向物件有三個基本特徵,分別是繼承、封裝和多型。繼承之前講過了,這次說一下封裝,下一次說多型。封裝,就是將要實現細節部分的內容,包裝、隱藏起來,只暴露允許給外界呼叫的方法(介面)。它,可以讓程式碼更容易理解與維護,也加強了程式碼的安全性。

22.1 屬性封裝

將屬性設定為私有(private)的,只能本類才能訪問,其他類都訪問不了,如此就對資訊進行了隱藏,如果要提供給外部訪問,就對屬性提供對外的公共(public)方法訪問,通常情況下,這些方法被稱為getter和setter方法。

public class Student {    //隱藏資訊    private String name;    private int age;    //提供對外的方法(介面)    public void setName(String name) {        //在這可以進行一些限制        this.name = name;    }    //提供對外的方法(介面)    public String getName() {        return name;    }    public void setAge(int age) {        this.age = age;    }    public int getAge() {        return age;    }}

外部想直接訪問Student的屬性是訪問不了的,只能透過其對外提供的方法(介面)進行操作。

/* * Java封裝講解 */public class Main {    public static void main(String[] args) {        Student student = new Student();        //只能透過方法設定屬性        student.setName("王老虎");        student.setAge(16);        //只能透過方法訪問屬性        System.out.println(student.getName() + ",滿"                            + student.getAge() + "歲了.");    }}

輸出結果

王老虎,滿16歲了.
22.2 介面封裝

將要實現的程式碼放在實現類中,統一對外提供訪問介面,這其實是更常見的封裝方法,只是說的人比較少,所以,你要趕緊關注老陳我啊。面向介面程式設計,才是真正的踐行者。如果以後我有幸講解Spring,而你有時間看的話,那你就會對封裝理解更深刻的。

public interface AnnuaLeave {    //計算年假    double computeYear(int entryAge);}

實現年假的類。如果某一天企業年假計算方法改變了,那你就直接改變實現類裡的方法,其他地方保持不變。

//實現年假計算public class AskForLeave implements AnnuaLeave {    public double computeYear(int entryAge) {        if (entryAge >= 1) {            return 5.0;        } else {            return 0.0;        }    }}

呼叫年假計算介面,不管年假具體的實現類,封裝,可以減少程式碼的耦合。

/* * Java封裝講解 */public class Main {    public static void main(String[] args) {        AnnuaLeave annuaLeave = new AskForLeave();        double c = annuaLeave.computeYear(1);        System.out.println("工作忙1年,可以休" + c + "天年假。");    }}

輸出結果

工作忙1年,可以休5.0天年假。

#Java##APP##程式設計師##Web##Spring#

14
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • js如何將一個數組按照自己固定的順序排序?