1. 程式人生 > 實用技巧 >Java基礎教程----面向物件(上)----面向物件的特徵一:封裝性、

Java基礎教程----面向物件(上)----面向物件的特徵一:封裝性、

面向物件的特徵一:封裝性

1.為什麼要引入封裝性?

 我們程式設計追求“高內聚,低耦合”。
 高內聚 :類的內部資料操作細節自己完成,不允許外部干涉;
 低耦合 :僅對外暴露少量的方法用於使用。
 隱藏物件內部的複雜性,只對外公開簡單的介面。便於外界呼叫,從而提
高系統的可擴充套件性、可維護性。通俗的說,把該隱藏的隱藏起來,該暴露
的暴露出來。這就是封裝性的設計思想

2.問題引入:

*當我們建立一個類的物件以後,我們可以通過“物件。屬性”方式,對物件的屬性進行賦值
*這裡 賦值操作要收到屬性的資料型別和儲存範圍的制約。除此之外,沒有其他制約條件。
*但是。在實際問題中,我們往往需要給屬性複製加入額外的限制條件。這個條件就不能再屬性宣告時體現。

*我們智慧通過方法進行限制條件的新增(比如setLegs()) 。同時 我們需要避免使用者再使用
*“物件。屬性”方式對屬性進行賦值。則需要將屬性宣告為私有的private
*-->此時,針對於屬性就體現了封裝性。

是封裝性的體現之一,不等同。

3.封裝性思想的具體程式碼的實現

體現一:將類的屬性私有化(private)同時提供公共(public)的方法來獲取(getXxx)和設定(setXxx)此屬性的值

class Circle {
    private int radius;

    public void setRadius(int r) {
        radius 
= r; } public int getRadius() { return radius; } }

體現二:不對外暴露的私有的方法

體現三:單例模式(將構造器私有化)

體現四:如果不希望類在包外被呼叫,可以將類設定為預設的。

4.Java規定的四種許可權修飾符

4.1 許可權從小到大順序為:private < 預設 < protected <public

4.2具體的修飾範圍:

4.3許可權修飾符可用來修飾的結構說明:

4種許可權可以用來修飾類及類的內部結構:屬性、方法、構造器、內部類

修飾類的話,只能使用 :預設、 public

類的結構:構造器

1.構造器(或構造方法):Constructor

構造器的作用:

* 1.建立物件
* 2.初始化物件的屬性

2.使用說明

* 1.如果沒有顯式的定義一個構造器的話,那麼系統預設提供一個空參的構造器
* 2.定義構造器的格式,許可權修飾符 類名(形參列表){}
* 3.一個類中定義的多個構造器,彼此構成過載
* 4.一旦我們顯式的定義了類的構造器之後,系統就不再提供預設的空參構造器。
* 5.一個類中,至少會有一個構造器

public class A{

  public A(){}

}

class A{

  A(){}

}

3.舉例:

public Person() {
    System.out.println("Person()..");
}
public Person(String n) {
    name = n ;
}
public Person(String n,int a) {
    name = n ;
    age = a;
}

屬性的賦值順序

① 預設初始化
② 顯示初始化
③ 構造器中初始化
④ 通過“物件.方法”或“物件.屬性”的方式 賦值

順序:①--②--③--④

JavaBean的概念

JavaBean是一種Java語言寫成的可重用元件。
所謂javaBean,是指符合如下標準的Java類:
類是公共的
有一個無參的公共的構造器
有屬性,且有對應的get、set方法

關鍵字:this

1.可以呼叫的結構:

屬性、方法;構造器

2.this呼叫屬性、方法:

this理解為:當前物件 或 當前正在建立的物件

*2.1在類的方法中,我們可以使用“this.屬性”或“this.方法”的方式呼叫當前物件屬性或方法
* 是通常情況下, 我們都選擇省略“this."
* 特殊情況下,如果方法的形參和類的屬性同名時,我們必須顯示的使用“this.變數”的方式
* 表明此變數是屬性,而非形參
*
* *2.2在類的構造器中,我們可以使用“this.屬性”或“this.方法”的方式呼叫當前正在建立物件屬性或方法
* 是通常情況下, 我們都選擇省略“this."
* 特殊情況下,如果構造器的形參和類的屬性同名時,我們必須顯示的使用“this.變數”的方式
* 表明此變數是屬性,而非形參

3.this呼叫構造器

* ①我們在類的構造器中,可以顯式的使用“this(形參列表)”方式,呼叫奔雷中制定的其他構造器
* ②構造器中不能通過“this(形參列表)”方式調自己
* ③如果一個類中有n個構造器,則最多有n-1構造器使用了“this(形參列表)”
* ④規定:“this(形參列表)”必須宣告在當前構造器的首行
* ⑤構造器內部:最多隻能宣告一個“this(形參列表)”,用來呼叫其他的構造器

關鍵字:package/import

1.package的使用

1.1使用說明

* 1.為了更好的實現專案中類的管理,提供包的概念
* 2.使用package宣告類或介面所屬的包,宣告在原始檔的首行
* 3.包,屬於識別符號,遵循識別符號的命名規則、規範(xxxyyyzzz)、“見名知意”
* 4.每“.”一次,就代表一層檔案目錄。

1.2舉例

舉例一:某航運軟體系統包括:一組域物件、GUI和reports子系統

GUI:使用者介面

reports :顯示、生成

domain:javabean

舉例二:MVC設計模式

1.3JDK中主要包的介紹

2.import的使用

* import:匯入
* 1.在原始檔中顯式的使用import結構匯入指定包下的類、介面
* 2.宣告在包的宣告和類的宣告之間
* 3.如果需要匯入多個結構,則並列寫出即可
* 4.可以使用“xxx.*"的方式,表示可以匯入xxx包下的所有結構
* 5.如果使用的類或介面是java.lang包下定義的,則可以省略import結構
* 6.如果使用的類或介面是本包下定義的,則可以省略import結構
* 7.如果在原始檔中,使用了不同包下的同名的類、則必須至少有一個類需要以全類名的方式進行顯示
* 8.使用"xxx.*"方式表明可以呼叫xxx包下的所有結構。但是如果使用的是xxx子包下的結構,則仍需要顯式匯入
* 9. import static :匯入制定類或介面中的靜態結構:屬性或方法。