1. 程式人生 > >面向對象(OOP)

面向對象(OOP)

java 地址 false 成員 執行 語法 java類 多個 形參

  • 學習線路

      初學:
          熟悉語法
      進階:
          1、23種設計模式
          2、6中開發原則
      高級:
          1、優化
          2、架構
          3、安全

    概念

      類:一類具有相同特性的事物的抽象描述,用一個java類表示。
      成員變量:抽取的屬性。
      方法:抽取的行為。
      對象:是類的實體。(object/instance)

類與對象

    1、如何聲明一個類
        [public 等修飾符] class 類名稱{
            類成員列表;
        }
    2、創建對象
        類名稱 對象名 = new 類名稱();
    3、屬性:位置在類中,方法外
      
      為屬性賦值:對象.屬性 = 值;
        (1)屬性有默認值
            和數組的元素的默認值是一樣的:
            byte,short,int,long:0
            float,double:0.0
            char:\u0000
            boolean:false
            引用數據類型:null
  • 權限修飾符(*****)
修飾符 本類 本包 子類 任何地方 可修飾
private ? ? ? ? 屬性、方法、內部類、構造器
default ? ? ? ? 屬性、方法、內部類、構造器、外部類
protected ? ? ? ? 屬性、方法、內部類、構造器
public ? ? ? ? 屬性、方法、內部類、構造器、外部類

方法

  • 聲明方法

      1、 聲明方法
    
          1、先聲明後使用
          2、位置:類中方法外
          3、格式:
          [修飾符] 返回值類型 方法名(形參列表){
              方法體(實現該功能的代碼);
          }
      2、形參:定義/聲明方法時()中的參數。
        實參:調用方法時傳入的參數。
      3、形參是基本數據類型時,傳值;當是引用數據類型時,傳引用(地址)
    註意:String對象不可變,還有包裝類等對象
  • 調用方法

      1、靜態方法
          非本類    類名.方法名();
          本類   方法名();
      2、非靜態方法
          對象.方法名();
  • 方法的特點

      1、先聲明後調用
      2、不調用不執行,調用一次執行一次
      3、方法最多有一個返回值;可以沒有返回值,當返回值數量大於1時,用數組或者集合裝起來後,返回
      4、方法可以嵌套調用,但是不可以嵌套定義。
  • 方法的重載(Overload)

      定義:(1)相同類中的兩個或多個方法(2)方法名相同,形參列表不同(類型、個數、順序)(3)與返回值類型無關。
  • 命令行參數:給主方法(main)傳遞實參。

          cmd 模式下》》   java   類名稱   實參1  實參2  實參3 ....
  • 可變參數

      某個方法調用時,實參的個數是可變的。  
      (1)一個方法最多有一個可變參數
      (2)必須放在最後
         public int qiuhe(int... num){//num本質是數組
              int sum = 0;
              for(int i=0;i<num.length;i++){
                  sum += num[i];
              }
         }
      如何調用?
          (1)傳遞相同類型的參數0~n個
          (2)可以傳遞相同類型的數組

構造器

1、有什麽作用
    (1)創建對象時,並為屬性賦值。
2、有什麽特點
    (1)所有類都有構造器,如果這個類沒有顯示聲明構造器,將默認有無參構造,若加了構造器,則不再有無參構造器。
    (2)構造器可以重載
    (3)構造器名和類名相同
3、如何聲明
    【修飾符】 構造器名(){}
    【修飾符】 構造器名(形參列表){}
4、怎麽調用構造器
    在非本類中   類名 變量名 = new 類名();

this關鍵字

用法:
    this.屬性;
        當成員變量與局部變量重名時,成員變量前加this,加以區分。
    this.方法();
        this代表當前對象。
    this();
        表示訪問本類的無參構造,有形參時,訪問有參構造。必須在構造器中第一句。

super關鍵字

    super.屬性
        當子類與父類的某個可見的屬性“重名”時,用“super.”表示訪問父類的屬性
    super.方法();
        當子類需要調用父類重寫的方法時,需要加"super."
    super();
        只能出現在子類構造器的首行。
        默認出現的是super(),表示調用父類的無參構造器。你寫不寫我都存在。
        如果父類沒有無參構造,必須在子類的構造器首行,用super(實參列表)調用父類的構造器。

包的概念 package

  • 作用

      1、避免類的重名
      2、用於控制訪問權限
      3、劃分項目的結構層次,通常將功能相近的類劃分到同一個包中
  • 規則

      1、用package定義包,位於源文件首部
      2、包的命名規範 xxx.yyy.zzz(通常以所在公司的域名的倒置)
  • 導包 import

      1、位置:package和class之間
      2、import 包名.類名;
        import 包名.*;

    構造器

    1、每個類都有構造器
    2、當沒有顯示聲明構造器時,默認提供無參的構造器;當顯示聲明構造器時,則不再提供無參構造器,若需要還需顯示聲明。

    構造器的特點
    1、沒有返回值
    2、構造方法名和類名一樣
    3、可以重載

面向對象(OOP)