天天看點

類、對象和構造方法

之前說建立對象,建立類,我們隻是很籠統的知道如何建立他們,使用他們會産生什麼效果。下面來說一下對象和類是什麼?

java語言中的對象是對現實生活中對象的模拟,對象有稱為執行個體。

怎麼了解呢?在現實生活中每個人都是一個對象,一台電腦是一個對象等等,總的來說一個實體就是一個對象,而在java中對這些現實中的對象隻能通過描述來建立對象。

                       很明顯java中定義對象與現實對象的對應關系

類、對象和構造方法

java中将現實對象的資訊稱為屬性(也叫全局變量),将現實對象中的功能稱為方法。

java語言中把具有相同屬性和方法的-一組對象抽象到一個源檔案就形成了類。

定義類的步驟:

1、類名(辨別符命名規則,首字母大寫,多個單詞第二個字母首字母大寫)

2、屬性

3、方法

通過new關鍵字建立對象(執行個體化對象)

使用“.”運算符通路對象的屬性和方法。

對象名.屬性=值;(若該屬性之前已經指派,則調用時重新指派,如果在非靜态方法或代碼塊中使用直接屬性名,如果在靜态代碼塊或方法中要對象名.屬性)

對象名.方法名();

舉例:

public class Student {

//定義屬性

String id="001";  //學号

String name="張華"; //學生姓名

//定義寫作業方法

public void doHomework() {

System.out.println(this.name + "正在寫作業……");

}

public static void main(String[] args) {

Student stu1=new Student();//建立對象

Student stu2=new Student();

stu1.name="zhang";

stu2.doHomework();//調用方法

}

}

敲黑闆!!!這裡重點說一下this

this代表對目前對象的一個引用。

1、調用屬性 this.屬性=值;

2、調用方法 this.方法名();

3、調用構造方法 this([參數]);

注意:this在執行個體方法中通常被省略,除非執行個體方法中包含與成員變量同名的局部變量時,通路成員變量需要使用this。

對象與類的關系:

類是建立對象的模闆,決定對象的屬性和方法。也就是說在類中的對象同時具有類中定義的所有屬性和方法。

類是對象的一種類型。

類是對象的抽象化;對象是類的具體化。

封裝就是将描述一類事物的屬性和功能結合起來定義在一個.java源檔案中。

封裝優點:簡化程式設計、隐藏細節、通路控制

java的三大特點之一面向對象,通過這麼講訴對象的含義,建立對象的方式以及使用方式就能知道在java中以對象為中心,以消息為驅動,即程式=對象+消息(消息指方法的調用:通過向方法傳遞參數的方式向方法發送消息,并通過傳回值從方法中擷取資訊);而在面向過程語言中以過程為中心,以算法為驅動,即程式=算法+資料。

面向對象中也存在面向過程

想這樣一個問題,咱已經學會定義屬性了,如果老闆要求定義一個類,該類中n個屬性,而且給這些屬性賦m次不同的值,如果挨個每次指派不僅代碼量大,而且出錯率非常高,為了解決這個問題,java中出現了一個方法叫構造方法,下面看下如何定義和使用.

定義:構造方法負者初始化類中的執行個體變量

通路控制權限 類名([參數]){

方法體

}

注意:1、不包含傳回值,不能有static和final修飾

      2、在建立對象時被調用

      3、在類中聲明多個構造方法時,若參數個數相同對應參數的資料類型不能相同,要麼參數個數不同。

(例如:public Student(String a){

}

public Student(String a,int a){

})

      4、建立類時,若沒有顯示定義構造方法,則該類會存在一個預設的無參構造方法。

      5、若存在顯示構造方法,則預設構造方法則不存在

      6、本類中有多個構造方法,構造方法之間可以使用this調用,this放在構造函數代碼有效代碼的第一行,(普通方法不能調用構造方法)

有人問了若自己沒有定義構造方法,也能建立對象,為什麼?是的,在java中自己沒有定義構造方法但是jvm自己定義一個預設的無參構造方法,是以當建立對象時實際調用預設無參構造方法。這裡等同于定義成員變量不賦初始值,但是jvm會給其一個預設的初始值,若已經賦初始值,則預設的就不存在了,存在也沒有意義了呀。

初始化對象方式過程:

1、給對象的執行個體對象配置設定記憶體空間,預設初始化成員變量

2、成員變量聲明時初始化

3、初始化塊初始化(就是使用{}括起來)

4、構造方法初始化

重載:在同一個類中方法名相同參數清單不同。參數清單包括參數個數和參數類型