1. 程式人生 > >初步類與物件,封裝,構造方法

初步類與物件,封裝,構造方法

一,理解面對物件的思想
物件是已知的事物
物件會執行的動作
物件本身已知的事物被稱為
實際變數(instance variable)
物件可以執行的動作成為
方法(methods)
就是說:
如果你如果想洗衣服的話,面向過程就是你需要執行一系類的過程,裝衣服,放盆子裡,到洗衣粉,搓洗,擰乾。
而面向物件就是把衣服丟進全自動洗衣機裡,就可以了,洗衣機就是面向的物件。
面向過程:當需要實現一個功能的時候,每一個具體的步驟都要親力親為,詳細處理每一個細節。
面向物件:當需要實現一個功能的時候,不關心具體的步驟,而是找一個已經具有該功能的人,來幫我做事兒。

二,明確類和物件關係
類是一組相關屬性和行為的集合。可以看成是一類事物的模板,使用事物的屬性特徵和行為特徵來描述該類事物。
物件:是一類事物的具體體現。物件是類的一個例項(物件並不是找個女朋友),必然具備該類事物的屬性 和行為
類是物件的藍圖。它會告訴虛擬機器如何建立某種型別的物件,根據某類創建出來的物件都會有自己的實際變數(instance variable)。比如說你可以根據一個遊戲類創建出許多塔防遊戲,動作遊戲,益智遊戲,冒險遊戲,角色扮演遊戲等不同的遊戲。

三,掌握建立物件格式,並訪問類中的成員
建立物件的格式:
類名稱 物件名 = new 類名稱()
使用,分為兩種情況:
使用成員變數:物件名.成員變數名
使用成員方法:物件名.成員方法名(引數)
四,完成一個學生類的練習
定義一個類,用來模擬“學生”事物。其中就有兩個組成部分:

屬性(是什麼):
 姓名
 年齡
行為(能做什麼):
    吃飯

睡覺
    學習

對應到Java的類當中:

成員變數(屬性):
String name; // 姓名
int age; // 年齡
成員方法(行為):
public void eat() {} // 吃飯
public void sleep() {} // 睡覺
public void study() {} // 學習

注意事項:
1. 成員變數是直接定義在類當中的,在方法外邊。
2. 成員方法不要寫static關鍵字。
public class Student {

// 成員變數
String name; // 姓名
int age; // 姓名

// 成員方法
public void eat() {
    System.out.println("吃飯飯!");
}

public void sleep() {
    System.out.println("睡覺覺!");
}

public void study() {
    System.out.println("學習!");

}
}
五,成員變數和區域性變數
1.在類中的位置不同:
成員變數:類中,方法外
區域性變數:方法中或者方法宣告上(形式引數)
2.作用範圍不一樣:
成員變數:在類中
區域性變數:在方法中
3.初始化值是不同的
成員變數:有預設值
區域性變數:沒有預設值,必須先定義了賦值,最後在使用
4.在記憶體中的位置不同
成員變數:堆記憶體
區域性變數:盞記憶體中
5.生命的週期不同
成員變數:隨著物件的建立而存在,隨著物件的消失而消失
區域性變數:隨著方法的建立而存在,隨著方法的呼叫完而消失。
六,封裝
封裝概述
面向物件程式語言是對客觀世界的模擬,客觀世界裡成員變數都是隱藏在物件內部的,外界無法直接操作和修改。 封裝可以被認為是一個保護屏障,防止該類的程式碼和資料被其他類隨意訪問。要訪問該類的資料,必須通過指定的 方式。適當的封裝可以讓程式碼更容易理解與維護,也加強了程式碼的安全性。
原則:
將屬性隱藏起來,若需要訪問某個屬性,提供公共方法對其訪問。

步驟:
    1. 使用 private 關鍵字來修飾成員變數。 
    2. 對需要訪問的成員變數,提供對應的一對 getXxx 方法 、 setXxx 方法。    

封裝的操作——private關鍵字
private的含義
    1.private是以個許可權修飾符,代表最小許可權
    2.可以修飾成員變數和成員方法。
    3.被private修飾後的成員變數和方法,只在本類中才能訪問
private的使用格式
    private 資料型別 變數名:

this的含義
this代表所在類的當前物件的引用(地址值),即物件自己的引用。
使用格式: this.成員變數
優化2——構造方法
當一個物件被建立時候,構造方法用來初始化該物件,給物件的成員變數賦初始值。

        注意:無論你與否自定義構造方法,所有的類都有構造方法,因為Java自動提供了一個無引數構造方法, 一旦自己定義了構造方法,Java自動提供的預設無引數構造方法就會失效
        定義格式:       
修飾符 構造方法名(引數列表){ 
          // 方法體  

          構造方法的寫法上,方法名與它所在的類名相同。它沒有返回值,所以不需要返回值型別,甚至不需要void。

標準程式碼——JavaBean
JavaBean 是 Java語言編寫類的一種標準規範。符合 JavaBean 的類,要求類必須是具體的和公共的,並且具有無 引數的構造方法,提供用來操作成員變數的 set 和 get 方法
 
public class ClassName{ 
            //成員變數
            //構造方法
            //無引數構造方法【必須有】   
            //有參構造方法【建議有】
            //成員方法  
            //getXxx  
            //setXxx        
        }