1. 程式人生 > >第一章 物件和封裝

第一章 物件和封裝

  1. 物件和類的區別
  2. 定義類的方法
  3. 封裝的好處及步驟

(1)物件是類的例項,類的物件的抽象:簡單來說就是這樣,類是一個抽象的東西它裡面可以放有很多的屬性和方法。當我們想要使用到類中的方法時就要對這個類進行例項化,也就是建立這個類的物件,來呼叫類中的方法或者使用類中的屬性。我們可以由一個類建立多個物件

(2)定義類的方法,第一步:發現類   第二步:發現類的屬性  第三步:發現類的方法。    這樣你就可以定義出一個你所需要的類。

(3)封裝的好處在於,隱藏類的內部細節;讓使用者只能通過程式規定的方法來訪問資料;可以方便地加入存取控制語句,限制不合理操作。

單詞:

  1. class:類

  2. object:物件

  3. static:靜態
  4. finail:java中用來定義常量的關鍵字

  5. private:私有
  6. public:公有

  7. protect:保護
  8. penguin:企鵝

  9. health:健康
  10. love:愛

  1.2.1  建立類和物件

 

  下面就是一個類:

public class Penguin{
        String name = "無名氏";
        int health = 100;
        int love = 0;
        String sex 
= "Q仔"; public void print(){ System.out.println("寵物名"+this.name+"健康值:"+this.health+"親密度:"+this.love+"性別:"+this.sex+"。"); } }

  那麼怎麼建立一個物件呢?

  我們通常是:

  通過構造方法來建立物件,如

Penguin p = new Penguin();

  想要呼叫其中的屬性的話通過物件名.屬性名的方式呼叫屬性。如

p.name = "qq";

  呼叫方法通過  ==》 物件名.方法名。 如

p.print();

  Java中的常量,使用關鍵字 ”final“ 來修飾,並且常量名通常為大寫。如

final    String     SEX_MALE  =  "Q仔";
final    String     SEX_FEMALE = "Q妹";

常量是指在定義完了以後就不能被修改的一個屬性,常量在程式執行過程中不會發生變化,只能被引用,不能被重新賦值,也就是隻能在定義時修改其值。

 1.2.2    構造方法及其過載

什麼是構造方法?構造方法就是名稱和類名相同,沒有返回值型別的方法。構造方法的主要作用就是在建立物件的過程中執行一些初始化操作,如給成員屬性賦初始值。

知識點==》Java和C#一樣,在沒有給類提供任何構造方法時,系統會提供一個無參的方法體為空的預設構造方法。一旦提供了自定義構造方法,系統將不再提供這個預設的無參構造方法。如果要使用它,則程式設計師要自己手動新增一個無參構造方法。

方法的過載:方法名相同引數型別不同或者個數不同 返回值不要求。

1.2.3    static修飾符

static修飾符可以用來修飾屬性、方法和程式碼塊。static修飾的變數稱為類變數(類屬性)方法稱為類方法。不使用static修飾的屬性和方法屬於單個物件,稱為實力屬性和例項方法。

在方法裡不可以定義static變數,也就時說,類變數不能時區域性變數。(不能在方法裡定義靜態屬性)

 

  封裝是面向物件的三大特性之一,就是將類的狀態資訊隱藏在類的內部,不允許外部程式直接訪問,而通過該類提供的方法來實現對隱藏資訊的操作和訪問。

  封裝的具體步驟:修改屬性的可見性來限制對屬性的訪問;為每個屬性船艦一對賦值(setter)方法和取值(getter)方法。用於對這些屬性的存取;在賦值方法中,加入對屬性的存取控制語句。

  封裝的好處:隱藏類的實現細節;讓使用這隻能通過程式規定的方法來訪問資料;可以方便地加入存取控制語句,限制不合理操作。

  封裝時會用到多個許可權控制來修飾成員變數和方法,區別如下:

1publicpublic表明該資料成員、成員函式是對所有使用者開放的,所有使用者都可以直接進行呼叫

 

2privateprivate表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。

 

3protectedprotected對於子女、朋友來說,就是public的,可以自由使用,沒有任何限制,而對於其他的外部classprotected就變成private

作用域 當前類 同一package 子孫類 其他package 

public       √ √ √ √ 

protected √ √ √ × 

friendly     √ √ × × 

private     √ × × × 

不寫時預設為friendly 

  1.2.4   使用this關鍵字

  this關鍵字是對一個物件的預設引用。在每個例項方法內部,都有一個this引用變數,指向呼叫這個方法的物件。

this使用的例項:

public void set Name(String name){
      this.name=name;   //成員變數和區域性變數同名,必須使用this
}

public void setName(String xm){
      name=xm;     //成員變數和區域性變數不同名,this可以不使用this
}

 

使用this呼叫成員方法:

public void play(int n){
     health = health - n;
     this.print();       //this可以忽略,直接呼叫print();
}

 

使用this呼叫過載的構造方法,只能在構造方法中使用,必須是構造方法的第一條語句。

public Penguin(String name ,String sex){
      this.name = name ; 
      this.sex = sex;
}
public Penguin(String name,int health,int love,String sex){
     this(name,health);
     this.love = love;
     this.sex = sex;
}    

 

 知識點==》因為this在物件內部指代自身的引用,所以this只能嗲用例項變數、例項方法和構造方法。

this不能呼叫類變數和類方法(靜態方法,靜態變數),也不能呼叫區域性變數。