先來個例子看看;
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;
}
}
/**
* 仔細看就會發現,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個程序里都要寫,浪費代碼,浪費時間.
[火星人 ] Java封裝的簡單例子已經有470次圍觀