先來個例子看看; public class Man { //對屬性的封裝,一個人的姓名,年齡,妻子都是這個對象(人)的私有屬性 private String name; private int age; private Woman wife; //對改人對外界提供方法的封裝,可以設定妻子,姓名,年齡也可以獲得男人的姓名和年齡 public void setWife(Woman wife) { this.wife = wife; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class Woman { //屬性封裝 private String name; private int age; private Man husband; //方法封裝 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Man getHusband() { return husband; } public void setHusband(Man husband) { this.husband = husband; } } /** * 仔細看就會發(fā)現(xiàn),Man類沒有提供getWife的方法,這是以為男人不想讓自己的妻子被外界訪問, * * 直接下來呢,就是封裝可以吧一個對象的屬性私有,而提供一些可以被外界訪問的屬性的方法, * * 比如說,name屬性,Man和Woman類都有相應的get和set方法,外界都可以通過這些方法訪問和修改 * * 同時對一些改對象不想讓外界訪問的屬性,就不提供其方法,比如說Man的wife屬性,就沒有get方法 * * 外界是不能帶到Man類的wife屬性的 * */ 上面那例子可能沒有突出封裝的好處,下面來個超簡單的表達下: public class Show { public static void show(String str) { System.out.println(str); } } 上面就是對 System.out.println();的封裝。 調用的時候 : public class Use { public static void main(String[] args) { Show.show("封裝"); } } 這樣用的時候就不用使:System.out.println("封裝"); 如果還有地方用到, 就省去了好多 System.out.println(); 簡而言之,有一段代碼,如果3個程序要用它,你不封裝,那你就得在這3個程序里都要寫,浪費代碼,浪費時間。 |
|