1. 程式人生 > >java基礎知識整理 ---Day06面向物件

java基礎知識整理 ---Day06面向物件

一、程式語言的發展

機器語言

直接由計算機的指令組成,指令、資料、地
址都以“0”和“1”組成:可以被計算機直接識別並執行。

組合語言

用容易理解和記憶的符號表示指令、資料以
及暫存器等,抽象層次很低,程式設計師需要考慮大量的機器細節。

高階語言

遮蔽了機器細節,提高了語言的抽象層次接
近於人的自然語言,60 年代出現的結構化程式語言剔除了結
構化資料和語句,資料和過程抽象等概念。

面向物件的語言

與以往的各種語言的根本不同是,它的設計出發點就是為了更能直接地描述問題域中客觀存在的事物。語言的發展是朝著人類更容易理解的方向前進
OOP(Object Oritented Programming)面向物件程式設計,屬於程式設計的一種通用的思想。OOP 使我們的開發變得不再那麼複雜,並大大增加了程式的靈活性和擴充套件性。

二、 面向物件概述

面向物件的設計思想

面向物件的基本思想是,從現實世界中客觀存在的事物出發來構造軟體系統,並在系統的構造中儘可能運用人類的自然思維方式。
面向物件更加強調運用人類中日常的思維邏輯中經常採用的思想方法與原則,如抽象、分離、繼承、聚合、多型等。

三、 物件和類的概念

物件用計算機語言對問題域中事物的描述,物件通過“屬性(attribute)”和“方法(method)”。
類是用於描述同一型別的物件的一個抽象的概念,類中定義了這一類物件所具有的靜態屬性和動態屬性。
類可以看成一類物件的模板,物件可以看成該類的一個具體例項。

類,說白了就是歸類,就是對同種事物進行抽象,抽出“像”的部分,包含有關事務(物件)動作方式的資訊,包括它的名稱、屬性、方法及所在的場景或聯絡。

四、 Java 與面向物件

物件是 Java 程式的核心,在 Java 程式中“萬事萬物皆物件”。
類是用來建立同一型別的“模板”,在一個類中定義了該類物件所具有的成員變數以及方法
JDK 提供了很多類供程式設計人員使用,程式設計人員也可以定義自己的類。
成員變數=屬性 方法=功能
(1)Java 類的定義在這裡插入圖片描述
在這裡插入圖片描述

類的定義主要有兩方面組成——成員變數和方法

(一)、宣告成員變數的格式為:

訪問修飾符 	修飾符 	型別 	屬性名稱 = 初始值 ;
public		static 	int		a		=10;		

1.訪問修飾符:可以使用四種不同的訪問修飾符中的一種,包括public(公共的)、protected(受保護的),無修飾符和 private(私有的)。public 訪問修飾符表示屬性可以從任何其它程式碼呼叫。private 表示屬性只可以由該類中的其它方法來呼叫。

2.修飾符:是對屬性特性的描述,例如:static、final 等等。

3.型別:屬性的資料型別,可以是任意的型別。

4.屬性名稱:任何合法識別符號

5.初始值:賦值給屬性的初始值。如果不設定,那麼會自動進行初始化,基本型別使用預設值,物件型別自動初始化為 null。

(二)、宣告方法的格式為;

訪問修飾符 修飾符 返回值型別 方法名稱 (引數列表)  {方法體}
public	static	void		run		(無)		{}

1.返回值型別:表示方法返回值的型別。如果方法不返回任何值,它必須宣告為 void(空)。Java 技術對返回值是很嚴格的,例如,如果宣告某方法返回一個int值,那麼方法必須從所有可能的返回路徑中返回一個int值(只能在等待返回該 int 值的上下文中被呼叫。)

2.方法名稱:可以是任何合法識別符號,並帶有用已經使用的名稱為基礎的某些限制條件。

3.引數列表:允許將引數值傳遞到方法中。列舉的元素由逗號分開,而每一個元素包含一個型別和一個識別符號。在下面的方法中只有一個形式引數,用 int 型別和識別符號 days 來宣告:
public void test(int days){}

花括號內是方法體,即方法的具體語句序列

成員變數

成員變數可以使用 Java 語言中任何一種資料型別(包括基本型別和引用型別)
定義成員變數時可以對其初始化,如果不對其初始化,Java 使用預設的值對其初始化。
在這裡插入圖片描述
成員變數的作用範圍為整個類體

Java 面向物件基本概念

Java 語言中除基本型別之外的變數型別都稱為引用型別
Java 中的物件是通過引用對其操作的。
例如:
Dog dog;
dog = new Dog();
如何在記憶體中區分類和物件?
類是靜態的概念,程式碼區物件是 new 出來的,位於堆記憶體,類的每個成員變數在不同的物件中都有不同的值(除了靜態變數)而方法只有一份,執行的時候才佔用記憶體。

物件的建立和使用

必須使用 new 關鍵字建立物件,new 做三件事:
①會在堆中為相應型別分配空間
②會呼叫相應的構造方法來初始化物件
③將在堆中開闢的空間的地址返回回來

使用物件(引用).成員變數來引用物件的成員變數。

在這裡插入圖片描述
引用JianLin物件的型別為int的hhhh成員變數
在這裡插入圖片描述

使用物件(引用).方法(引數列表)來呼叫物件的方法。

在這裡插入圖片描述
通過j…xiaoMiQian();來呼叫物件方法
在這裡插入圖片描述
同一類的每個物件有不同的成員變數儲存空間。
同一類的每個物件共享該類的方法。

五、 方法(複習)

上面已經提過方法這裡再鞏固一下
Java 的方法類似於其他語言的函式,是一段用來完成特定功能的程式碼片段,宣告格式:
[修飾符 1 修飾符 2….] 返回型別 方法名(形式引數列表)
{
Java 語句;。。。
}
形式引數:在方法被呼叫時用於接收外接輸入的資料。
實參:呼叫方法時實際傳給方法的資料
返回值:方法在執行完畢後返還給呼叫它的環境的資料
返回值型別:事先約定的返回值的資料型別,如無返回值,必須給出返回值型別 void
Java 語言中使用下述形式呼叫方法:物件名.方法名(實參列表)
實參的數量、資料型別和次序必須和所呼叫方法宣告的形參列表匹配,return 語句終止方法的執行並指定要返回的資料型別
Java 中進行函式呼叫中傳遞引數時,遵循值傳遞的原則:
基本型別傳遞的是該資料值本身。引用型別傳遞的是物件的引用,而不是物件本身
TestMethod.java

六、 構造器(構造方法|建構函式)

在建立物件時(new),必會呼叫一個特殊的方法,這個方法是初始化物件資訊的為 new 服務的。這個方法稱為“構造器”在這裡插入圖片描述
使用 new + 構造方法建立一個新的物件。
建構函式是定義在 Java 類中的一個用來初始化物件的函式。
建構函式與類同名且沒有返回值。
例如: Person 類的建構函式:
在這裡插入圖片描述
在這裡插入圖片描述
建立物件時,使用建構函式初始化物件的成員變數
在這裡插入圖片描述

構造方法的特點:

1) 名稱必須和類名一致,與類名相同
2) 沒有返回型別|void
3) 構造器可以存在 return,return 有選擇的跳出構造器
4) 不能隨便呼叫,和 new 在一起使用,其他時候不能呼叫
5) 修飾符不能為 final abstract static

作用:

初始化物件資訊,不是用於建立物件的

空構造:

沒有引數的構造器、無參構造
1) 一個類中,如果沒有顯示|手動 加入 任意構造器javac 編譯後 自動加入空構造
2) 一旦加入構造器, javac 不會加入空構造器

方法的過載

方法的過載是指一個類中可以定義有相同的方法名,但引數不同的多個方法。呼叫時,會根據不同的引數列表選擇對應的方法。
在這裡插入圖片描述
構造方法的過載與普通方法一樣,構造方法也可以過載
例子如下:在這裡插入圖片描述

七、 引用與記憶體分析

記憶體分析

在這裡插入圖片描述

引用的特點:

1) 同一時刻一個一引用只能指向一個物件
2) 一個物件可以被多個引用所指向,其中一個對其進行更改,該物件的其他引用也可見該變化
3) Java 一切為值傳遞,引用拷貝地址
約定俗成的命名規則
類名的首字母大寫
變數名和方法名的首字母小寫
運用駝峰標識

總結:物件的建立和使用

必須使用 new 關鍵字建立物件
使用物件引用.成員變數來引用物件的成員變數
使用物件引用.方法(引數列表)來呼叫物件的方法
同一類的每個物件有不同的成員變數儲存空間
同一類的每個物件共享該類的方法
非靜態方法是針對每個物件進行呼叫