Java學習筆記之——面向對象

之前學cpp的時候已經學過了,在此對java的面向對象也記錄熟悉一下哈~

之前博文《Android學習筆記之——Android Studio的安裝(3.6版本)、Java的基本語法及Android的概述 》有介紹過如何基於android studio進行java開發,但是本博文不打算對代碼進行運行(雖然建議學習的時候邊看邊敲)

 

目錄

方法

方法的定義

方法的調用

使用方法的一些注意事項

方法的重載(Overload)

面向對象

概述

類和對象

類的定義

構造方法

創建對象

封裝

This方法

繼承

多態

其他知識點筆記

數組

Java中內存劃分

參考資料


 

方法

Java方法是語句的集合,它們在一起執行一個功能。

  • 方法是解決一類問題的步驟的有序組合
  • 方法包含於類或對象中
  • 方法在程序中被創建,在其他地方被引用

 

  • 方法定義的順序無所謂
  • 一個方法內部不能定義另外一個方法
  • 方法必須調用纔會執行

方法的定義

修飾符 返回值類型 方法名(參數類型 參數名){
    ...
    方法體
    ...
    return 返回值;
}

方法包含一個方法頭和一個方法體。下面是一個方法的所有部分:

  • 修飾符:修飾符,這是可選的,告訴編譯器如何調用該方法。定義了該方法的訪問類型。如:public static
  • 返回值類型 :方法可能會返回值。returnValueType 是方法返回值的數據類型。有些方法執行所需的操作,但沒有返回值。在這種情況下,returnValueType 是關鍵字void
  • 方法名:是方法的實際名稱。方法名和參數表共同構成方法簽名。
  • 參數類型:參數像是一個佔位符。當方法被調用時,傳遞值給參數。這個值被稱爲實參或變量。參數列表是指方法的參數類型、順序和參數的個數。參數是可選的,方法可以不包含任何參數。(如果有多個,用逗號)
  • 方法體:方法體包含具體的語句,定義該方法的功能。
  • return:首先停止方法,其次將後面的返回值返回去調用處

定義方法時。三個注意點:

  • 返回值類型
  • 方法名稱
  • 參數列表

 

方法的調用

方法名稱(參數);

方法調用的三種格式

  1. 單獨調用:方法名稱(參數)
  2. 打印調用:Sytem.out.println(方法名稱(參數));
  3. 賦值調用:變量=方法名稱(參數)

而對於返回值爲void的方法,只能單獨調用。

 

方法調用流程
有無返回值的方法調用

使用方法的一些注意事項

 

方法的重載(Overload)

就是說一個類的兩個方法擁有相同的名字,但是有不同的參數列表(參數的數目、類型不同、多參數的順序不同)

Java編譯器根據方法簽名判斷哪個方法應該被調用。

方法重載可以讓程序更清晰易讀。執行密切相關任務的方法應該使用相同的名字。

重載的方法必須擁有不同的參數列表。你不能僅僅依據修飾符或者返回類型的不同來重載方法。所以方法的重載與參數的名稱及返回值的類型無關。

 

面向對象

概述

程序中有面向過程和麪向對象兩種。

面向過程:當需要實現一個功能的時候,每一個具體的步驟都要親歷親爲,詳細處理每一個細節。

面向對象:不關心具體的步驟

面向對象的三大特徵:封裝、繼承、多態

類和對象

  • 對象:對象是類的一個實例,有狀態和行爲。例如,一條狗是一個對象,它的狀態有:顏色、名字、品種;行爲有:搖尾巴、叫、喫等。
  • :類是一個模板,它描述一類對象的行爲和狀態。一組相關屬性(狀態信息)和行爲(做什麼)的集合。

類是對一類事物的描述,是抽象的。對象是一類事物的實例,是具體的。類是對象的魔板,對象是類的實例

類的定義

public class 類名稱{

    成員變量
        變量類型 名稱

    成員方法
        方法的聲明(成員方法沒有static)
}

成員變量:對應事物的屬性。直接定義在類當中,在方法的外邊

成員方法:對應事物的行爲。不要寫static關鍵字

 

一個類可以包含以下類型變量:

  • 局部變量:在方法、構造方法或者語句塊中定義的變量被稱爲局部變量。變量聲明和初始化都是在方法中,方法結束後,變量就會自動銷燬。
  • 成員變量:成員變量是定義在類中,方法體之外的變量。這種變量在創建對象的時候實例化。成員變量可以被類中方法、構造方法和特定類的語句塊訪問。
  • 類變量:類變量也聲明在類中,方法體之外,但必須聲明爲static類型。

局部變量與成員變量的區別:

 

構造方法

每個類都有構造方法。如果沒有顯式地爲類定義構造方法,Java編譯器將會爲該類提供一個默認構造方法。

在創建一個對象的時候,至少要調用一個構造方法。構造方法的名稱必須與類同名,一個類可以有多個構造方法。

 

創建對象

標準的類

 

 

封裝

在面向對象程式設計方法中,封裝(英語:Encapsulation)是指一種將抽象性函式接口的實現細節部分包裝、隱藏起來的方法。

封裝可以被認爲是一個保護屏障,防止該類的代碼和數據被外部類定義的代碼隨機訪問。

要訪問該類的代碼和數據,必須通過嚴格的接口控制。

封裝最主要的功能在於我們能修改自己的實現代碼,而不用修改那些調用我們代碼的程序片段。

適當的封裝可以讓程式碼更容易理解與維護,也加強了程式碼的安全性。

 

封裝在java中的體現:

  1. 方法就是一種封裝
  2. 關鍵字private也是一種封裝

一旦使用使用private修飾,那麼本類以外不能直接訪問。進而可以提高代碼的安全性

而間接訪問private成員變量,就是定義一對Getter/Setter方法。

修改屬性的可見性來限制對屬性的訪問(一般限制爲private),例如:

public class Person {
    private String name;
    private int age;
}

這段代碼中,將 name 和 age 屬性設置爲私有的,只能本類才能訪問,其他類都訪問不了,如此就對信息進行了隱藏。

對每個值屬性提供對外的公共方法訪問,也就是創建一對賦取值方法,用於對私有屬性的訪問,例如:

public class Person{
    private String name;
    private int age;
​
    public int getAge(){
      return age;
    }
​
    public String getName(){
      return name;
    }
​
    public void setAge(int age){
      this.age = age;
    }
​
    public void setName(String name){
      this.name = name;
    }
}

採用 this 關鍵字是爲了解決實例變量(private String name)和局部變量(setName(String name)中的name變量)之間發生的同名的衝突。

This方法

this來指代當前的類。通過誰調用的方法,誰就是this

 

繼承

繼承是多態的前提。

繼承主要解決的問題是:共性抽取

格式:

class 父類 {
}
 
class 子類 extends 父類 {
}

關於同一個類中變量重名

如果不寫this和super的話,訪問的方法是就近原則。

方法的重寫與重載

關於繼承中的構造方法

super關鍵字

this關鍵字

 

 

多態

多態是同一個行爲具有多個不同表現形式或形態的能力。

多態就是同一個接口,使用不同的實例而執行不同操作,如圖所示

extends繼承或者implements實現是多態性的前提。

成員變量與成員方法的規則不一樣!

多態的作用

 

其他知識點筆記

數組

  1. 數組是一種引用的數據類型
  2. 數組當中的數據類型必須統一
  3. 數組的長度在程序運行期間不可改變。

初始化方法:

  1. 動態初始化(指定長度)   
    數據類型 [] 數組名稱=new 數據類型[數組的長度];
    動態初始化可以拆分
  2. 靜態初始化(指定內容)
數據類型 [] 數組名稱=new 數據類型[] (元素1,元素2,...);
靜態初始化可以拆分
  • 直接打印數組的名稱,得到的是數組對應的地址。
  • 數組[數字]纔是對具體元素的引用,從0開始,注意是中括號

數組長度在程序運行過程中不可改變。通過數組.length來獲取長度

 

Java中內存劃分

API

ArrayList<E>

長度爲任意可變的

<E>爲泛型,也就是裝在集合當中的所有元素,全部都是統一的什麼類型。

注意,泛型只能是引用類型,不能是基本類型。

static

多個對象共享同一個數據。

 

參考資料

https://www.runoob.com/java/java-methods.html

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章