基本概念
Java 物件導向有三大特性:封裝、繼承、多態。而封裝與繼承基本上是為多態服務的。
封裝(Encapsulation):就是把物件的屬性和操作(或服務)結合為一個獨立的整體,並盡可能隱藏物件內部的實作細節。通俗來講就是私有化類別的成員變量,並提供公共方法來存取這些成員變數。
資料隱藏:一個成員變數宣告為私有成員,那麼它就不能透過外部類別直接訪問,從而將成員變數隱藏在類別的內部。基於這個原因,封裝也被稱為資料隱藏。
JavaBean
JavaBean 是一種規範,它規定了一個良好封裝的規範,只要符合該規範的類別都稱為JavaBean。
它有以下特點:
#
1 | public void set 成员名(成员类型 arg); public 成员类型 get 成员名();
|
登入後複製
實例探究
1.未封裝&封裝
首先我們來看未封裝的成員變數:
1 2 3 4 5 6 7 8 9 10 | class Person{
public String name; public int age;
} public class Test{
public static void main(String[] args) {
Person person = new Person();
person.name = "kobe" ;
person.age =1000;
System.out.println(person.name+ "-" +person.age);
}
}
|
登入後複製
下面我們對上面的類別進行封裝:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Person {
private String name; private int age;
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 Test {
public static void main(String[] args) {
Person person = new Person();
person.setName( "kobe" );
person.setAge(1000);
System.out.println(person.getName() + "-" + person.getAge());
}
}
|
登入後複製
#到目前為止我們看到封裝與未封裝物件的大概區別了:
2.封裝控制物件
#如果只是這樣,封裝似乎也沒有什麼作用,接下來我們看看如何透過封裝實現對物件的控制:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | class Person {
private String name;
private int age;
private int city;
public String getName() {
return "kobe" ;
} public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} public void setAge(String age) {
if (age.matches( "[0-9]" )){
this.age = Integer.valueOf(age);
} else {
System.out.println( "Error:年龄只能为数字" );
}
}
public String getCity() {
switch (city) {
case 001:
return "北京" ;
default :
return "上海" ;
}
}
public void setCity(String city) {
if ( "北京" .equals(city)){
this.city = 001;
} else if ( "上海" .equals(city)){
this.city = 002;
} else {
System.out.println( "Error:没有找到该城市" );
}
}
} public class Test {
public static void main(String[] args) {
Person person = new Person();
person.setAge( "a" );
person.setAge(1000);
person.setCity( "广州" );
person.setCity( "北京" );
System.out.println(person.getName()+ "-" +person.getAge()+ "-" +person.getCity());
}
}
|
登入後複製
透過以上的程式碼,我們大致可以總結出封裝的作用:
良好的封裝能夠減少耦合。
類別內部的結構可以自由修改。
可以對成員進行更精確的控制。
隱藏訊息,實作細節。
參考
以上就是01.Java 基礎- 封裝的內容,更多相關內容請關注PHP中文網(www.php.cn)!
#