1. 程式人生 > >【Java菜鳥學習總結】Java基礎知識(類)

【Java菜鳥學習總結】Java基礎知識(類)

個數 修飾符 trac 空間 釋放 set 大小 成員方法 的區別

目錄

  • 【Java菜鳥學習總結】Java基礎知識(類)
    • 1、面向對象編程
    • 2、類
    • 3、static關鍵字
    • 4、final關鍵字

【Java菜鳥學習總結】Java基礎知識(類)


1、面向對象編程

1.1、面向對象編程的特征

面向對象編程(OOP)的三大特征 {
    
    封裝;
    
    繼承;
    
    多態;
}

1.2、類與對象概述

類與對象是面向對象的核心概念。

類與對象 {
    
    類;  // 類是對於一類事物的描述,是抽象的、概念的定義。
    
    對象; // 對象是實際存在的該類事物的每個個體,因而也別稱為實例。
}

2、類

2.1、類的語法

修飾符 class 類名 {
    
    屬性聲明;      // 屬性,對應類中的成員變量
    方法聲明;      // 行為,對應類中的成員方法
}

2.2、類的關系

類的關系 {
    
    關聯關系;
    繼承關系;
    聚集;
    組合;
}

2.3、屬性

2.3.1、屬性的語法
修飾符 類型 屬性名 = 初值
2.3.2、Java變量
  • Java變量的概念
變量 {
    
    成員變量 {
        實例變量;       // 不以static修飾
        類變量;         // 以static修飾
    }
    
    局部變量 {
        形參;          // 方法簽名中定義的變量
        方法局部變量;   // 在方法中定義
        代碼塊局部變量; // 在代碼塊中定義
    }
}
  • 成員變量和局部變量的區別
成員變量和局部變量的區別 {
    
    成員變量 {
        // 成員變量定義在類中,在整個類中都可以被訪問。
        // 成員變量分為類成員變量和實例成員變量,實例變量存在於對象所在的堆內存中。
        // 成員變量有默認初始化值。
        // 成員變量的權限修飾符可以根據需要,選擇任意一個。
    }
    
    局部變量 {
        // 局部變量只定義在局部範圍內,如方法內、代碼塊內等。
        // 局部變量存在於棧內存中。
        // 作用的範圍結束,變量空間會自動釋放。
        // 局部變量沒有默認初始化值,每次必須顯示初始化。
        // 局部變量聲明時不指定權限修飾符。
    }
}

2.4、方法

2.4.1、方法的語法
修飾符 返回值類型 方法名 (參數列表) {
    
    方法體語句;
}

// 註意:Java裏方法不能獨立存在,所有的方法都必須定義在類裏。
2.4.2、方法的參數傳遞
方法的參數傳遞方式 {
    
    值傳遞;    // 即將實際參數值的副本(復制品)傳入方法內,而參數本身不受影響
}
2.4.3、方法的重載
重載 {
    方法名相同;
    參數列表(參數個數、參數類型)不同;
    與返回值類型無關;
}

2.5、構造器

2.5.1、構造器的語法
修飾符 類名 (參數列表) {
    
    初始化語句;
}

// 構造器的作用:創建對象,給對象進行初始化
2.5.2、構造器的特征
構造器的特征 {
    
    // 具有與類相同的名稱
    // 不聲明返回值類型
    // 不能被static、final、synchronized、abstract、native修飾,不能有return語句返回值
}
2.5.3、構造器的分類
構造器分類 {
    
    隱式無參構造器;            // 系統默認提供
    
    顯示定義一個或多個構造器;   // 無參、有參
}
2.5.4、構造器註意事項
構造器註意事項 {
    
    // Java語言中,每個類都至少有一個構造器
    // 默認構造器的修飾符與所屬類的修飾符一致
    // 一個類可以創建多個重載的構造器
    // 父類的構造器不可被子類繼承
}

2.6、this

this {
    
    this.a = 10;             // 方法內部使用,即這個方法所屬對象的引用
    this.sayHello("hello");  // 方法內部使用,即這個方法所屬對象的引用
    
    this();                  /* 構造器內部使用,表示該構造器正在舒適化的對象。
                                使用this()必須放在構造器的首行。
                                使用this調用本類中其他的構造器,保證至少又一個構造器是不用this的。
                             */
}

// 說明:this表示當前對象,可以調用類的屬性、方法和構造器

2.7、封裝

Java中通過將數據聲明為私有的(private),再提供公共的(public)方法:getXxx()和setXxx()實現對該屬性的操作。

2.7.1、權限修飾符
  • Java權限修飾符public、protected、private置於類的成員定義前,用來限定對象對該類成員的訪問權限
權限修飾符 {
    
    private;     // 內部類√   同一個包×   子類×   任何地方×
    缺省;        // 內部類√   同一個包√   子類×   任何地方×
    protected;   // 內部類√   同一個包√   子類√   任何地方×
    public;      // 內部類√   同一個包√   子類√   任何地方√
}
  • 修飾符修飾範圍大小對比
public > protected > 缺省 > private
2.7.2、JavaBean
JavaBean {
    
    // 類是公共的
    // 有一個無參的公共的構造器
    // 有屬性,且有對應的get、set方法
}

/* 說明:
   用戶可以使用JavaBean將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,並且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。
 */

2.8、繼承

2.8.1、繼承的語法
class 子類類名 extends 父類類名 {
    
}
2.8.2、繼承的種類
繼承的種類 {
    
    單繼承;   // Java只支持單繼承,不允許多重繼承
}
2.8.3、super
  • super的使用
super {
    
    super.a = 10;             // 訪問父類中定義的屬性
    super.sayHello("hello");  // 調用父類中定義的成員方法
    super();                  // 子類構造器中調用父類的構造器
}
  • this和super的區別
this和super的區別 {
    
    訪問屬性 {
        
        this;   // 訪問本類中的屬性,如果本類中沒有此屬性則從父類中繼續查找
        super;  // 訪問父類中的屬性
    }
    
    調用方法 {
        
        this;   // 訪問本類中的方法
        super;  // 直接訪問父類中的方法
    }
    
    調用構造器 {
        
        this;    // 調用本類構造器,必須放在構造器的首行
        super;   // 調用父類構造器,必須放在子類構造器的首行
    }
    
    特殊 {
        
        this;     // 表示當前對象
        super;    // 無此概念
    }
}
2.8.4、重寫
  • 重寫的定義
重寫/重置/覆蓋/override的定義 {
    
    // 在子類中可以根據需要對父類中繼承來的方法進行改造。在程序執行時,子類的方法將覆蓋父類的方法。
}
  • 重寫的要求
重寫的要求 {
    
    // 重寫方法必須和被重寫方法具有相同的方法名稱、參數列表和返回值類型。
    // 重寫方法不能使用比被重寫方法更為嚴格的訪問權限。
    // 重寫和被重寫的方法必須同時為static,或同時為非static。
    // 子類方法拋出的異常不能大於父類被重寫方法的異常。
}

2.9、多態

2.9.1、多態的體現
多態的體現 {
    
    // 方法的重載和重寫
    // 對象的多態性,可以直接應用在抽象類和接口上
}

3、static關鍵字

3.1、static使用範圍

static使用範圍 {
    
    屬性;
    方法;
    代碼塊;
    內部類;
}

3.2、被修飾後的成員具備的特點

被static修飾後的成員 {
    
    // 隨著類的加載而加載
    // 優先於對象存在
    // 修飾的成員,被所有對象所共享
    // 訪問權限允許是,可不創建對象,直接被類調用
}

// 註意:在static方法內部只能訪問類的static屬性,不能訪問類的非static屬性。
// 註意:在static方法內部不能有this和super。
// 註意:重載的方法需要同時為static或者非static。

3.3、非靜態代碼塊和靜態代碼塊

非靜態代碼塊和靜態代碼塊 {
    
    // 沒有static修飾的代碼塊
    靜態代碼塊 {
        
        // 可以有輸出語句
        // 可以對類的屬性、類的聲明進行初始化操作
        // 可以調用靜態的變量和方法
        // 若有多個非靜態的代碼塊,那麽按照從上到下的順序依次執行
        // 每次創建對象的時候,都會執行一次。且先於構造器執行
    }
    
    // 用static修飾的代碼塊
    靜態代碼塊 {
        
        // 可以有輸出語句
        // 可以對類的屬性、類的聲明進行初始化操作
        // 不可以對非靜態屬性初始化。即:不可以調用非靜態的屬性和方法
        // 若有多個靜態的代碼塊,那麽按照從上到下的順序依次執行
        // 靜態代碼塊的執行要先於非靜態代碼塊
        // 靜態代碼塊只執行一次
    }
}

4、final關鍵字

4.1、final使用範圍

final使用範圍 {
    
    類;
    屬性;
    方法;
}

4.2、final的特點

被final修飾後的特點 {
    
    // final標記的類不能被繼承
    // fianl標記的方法不能被子類重寫
    // final標記的變量(成員變量或局部變量)即成為常量。名稱大寫,且只能被賦值一次
}

【Java菜鳥學習總結】Java基礎知識(類)