Java面項對象編程思想

一、面向對象思想

(一)、面向對象思想概述

1.1 概述

Java語言是一種面向對象的程序設計語言,而面向對象思想是一種程序設計思想,我們在面向對象思想的指引下,使用Java語言去設計、開發計算機程序。 這裏的對象泛指現實中一切事物,每種事物都具備自己的屬性和行爲。面向對象思想就是在計算機程序設計過程中,參照現實中事物,將事物的屬性特徵、行爲特徵抽象出來,描述成計算機事件的設計思想。 它區別於面向過程思想,強調的是通過調用對象的行爲來實現功能,而不是自己一步一步的去操作實現。

1.2 舉例

面向過程:當需要實現一個功能的時候,每一個具體的步驟都要親力親爲,詳細處理每一個細節。
面向對象:當需要實現一個功能的時候,不關心具體的步驟,而是找一個具有該功能的人,來幫我做事。
1.2.1 洗衣服:

  • 面向過程:把衣服脫下來–>找一個盆–>放點洗衣粉–>加點水–>浸泡10分鐘–>揉一揉–>清洗衣服–>擰乾–>晾起來
  • 面向對象:把衣服脫下來–>打開全自動洗衣機–>扔衣服–>按鈕–>晾起來

區別:

  • 面向過程:強調步驟。
  • 面向對象:強調對象,這裏的對象就是洗衣機。

1.2.2 打印數組輸出[1,2,3,4,5]

  • 面對對象的話:每一個步驟細節都要親力親爲
public static void main(String[] args) {
    int[] array = { 10, 20, 30, 40, 50, 60 };
    // 要求打印格式爲:[10, 20, 30, 40, 50]
    // 使用面向過程,每一個步驟細節都要親力親爲。
    System.out.print("[");
    for (int i = 0; i < array.length; i++) {
        if (i == array.length - 1) { // 如果是最後一個元素
            System.out.println(array[i] + "]");
        } else { // 如果不是最後一個元素
            System.out.print(array[i] + ", ");
        }
    }
}
  • 倘若運用面對對象的思想的話,只需要調用Array數組就行了。
public static void main(String[] args) {
    int[] array = { 10, 20, 30, 40, 50, 60 };
    // 找一個JDK給我們提供好的Arrays類,
    // 其中有一個toString方法,直接就能把數組變成想要的格式的字符串
    System.out.println(Arrays.toString(array));
}

(二)、類和對象

2.1 什麼是類?

  • 類:是一組相關屬性和行爲的集合。可以看成是一類事物的模板,使用事物的屬性特徵和行爲特徵來描述該類事物。
    現實中,描述一類事物:
  • 屬性:就是該事物的狀態信息。
  • 行爲:就是該事物能夠做什麼。
    舉例:學生。
    屬性:名字、年齡。 行爲:喫飯、睡覺、學習。
    對應到Java的類當中:

成員變量(屬性):

String name;//姓名
int age;//年齡

成員方法(行爲):

public void eat() {} //喫飯
public void sleep() {} //睡覺
public void study() {} //學習

注意:
①、成員變量是直接定義在類當中的,在方法外邊。
②、成員方法不要寫static關鍵字。

2.2 什麼是對象?

  • 對象:是一類事物的具體體現。對象是類的一個實例(對象並不是找個女朋友),必然具備該類事物的屬性和行爲。
    現實中,一類事物的一個實例:一隻小貓。
    舉例:一隻小貓。
    屬性:tom、5kg、2 years、yellow。 行爲:溜牆根走、蹦躂的跑、喵喵叫。

2.3 類與對象的關係

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

(三)、類的定義

3.1 類的定義格式舉例:

public class ClassName {
//成員變量
//成員方法
}
  • 定義類:就是定義類的成員,包括成員變量和成員方法。
  • 成員變量:和以前定義變量幾乎是一樣的。只不過位置發生了改變。在類中,方法外。
  • 成員方法:和以前定義方法幾乎是一樣的。只不過把static去掉,static的作用在面向對象後面課程中再詳細講解。
public class Student {
	//成員變量
	String name;//姓名
	int age;//年齡
	//成員方法
	//學習的方法
	publicvoid study() {
		System.out.println("好好學習,天天向上");
	}
		//喫飯的方法
	publicvoid eat() {
		System.out.println("學習餓了要喫飯");
	}
}

(四)、對象的使用

4.1 對象的使用格式

1.創建對象

類名 對象名 = new 類名();

2.使用對象訪問類中的成員

對象名.成員變量;
對象名.成員方法();

4.2 成員變量的默認值

在這裏插入圖片描述

(五)、類與對象的練習

定義手機類:

public class Phone {
    // 成員變量
    String brand; // 品牌
    int price; // 價格
    String color; // 顏色
    // 成員方法
    // 打電話
    public void call(String name) {
        System.out.println("給" + name + "打電話");
    }
    // 發短信
    public void sendMessage() {
        System.out.println("羣發短信");
    }
}

定義測試類

public class Test02Phone {
    public static void main(String[] args) {
        // 創建對象
        Phone p = new Phone();
        // 輸出成員變量值
        System.out.println("品牌:" + p.brand);// null
        System.out.println("價格:" + p.price);// 0
        System.out.println("顏色:" + p.color);// null
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");
        // 給成員變量賦值
        p.brand = "錘子";
        p.price = 2999;
        p.color = "棕色";
        // 再次輸出成員變量值
        System.out.println("品牌:" + p.brand);// 錘子
        System.out.println("價格:" + p.price);// 2999
        System.out.println("顏色:" + p.color);// 棕色
        System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐");
        // 調用成員方法
        p.call("紫霞"); 
        p.sendMessage();
    }
}

(六)、對象內存圖

6.1 一個對象,調用一個方法內存圖

在這裏插入圖片描述

  • 通過上圖,我們可以理解,在棧內存中運行的方法,遵循"先進後出,後進先出"的原則。變量p指向堆內存中的空間,尋找方法信息,去執行該方法。

6.2 兩個對象,調用同一個方法

在這裏插入圖片描述

  • 對象調用方法時,根據對象中方法標記(地址值),去類中尋找方法信息。這樣哪怕是多個對象,方法信息只保存一份,節約內存空間。

6.3 兩個引用指向同一個對象的內存圖

在這裏插入圖片描述

  • 引用類型作爲參數,傳遞的是地址值。

6.4 使用對象類型作爲方法的參數

在這裏插入圖片描述

6.5 使用對象類型作爲方法的返回值

在這裏插入圖片描述

(七)、成員變量和局部變量區別

在這裏插入圖片描述

  • 在類中的位置不同【重點】
    成員變量:類中,方法外
    局部變量:方法中或者方法聲明上(形式參數)
  • 作用範圍不一樣【重點】
    成員變量:類中
    局部變量:方法中
  • 初始化值的不同【重點】
    成員變量:有默認值
    局部變量:沒有默認值。必須先定義,賦值,最後使用
  • 在內存中的位置不同【瞭解】
    成員變量:堆內存
    局部變量:棧內存
  • 生命週期不同【瞭解】
    成員變量:隨着對象的創建而存在,隨着對象的消失而消失
    局部變量:隨着方法的調用而存在,隨着方法的調用完畢而消失
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章