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