之前說建立對象,建立類,我們隻是很籠統的知道如何建立他們,使用他們會産生什麼效果。下面來說一下對象和類是什麼?
java語言中的對象是對現實生活中對象的模拟,對象有稱為執行個體。
怎麼了解呢?在現實生活中每個人都是一個對象,一台電腦是一個對象等等,總的來說一個實體就是一個對象,而在java中對這些現實中的對象隻能通過描述來建立對象。
很明顯java中定義對象與現實對象的對應關系
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN0LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX3dGRNRTVXFWck1mYohWblZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zM5gzMzYDM1EzNyMDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
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、構造方法初始化
重載:在同一個類中方法名相同參數清單不同。參數清單包括參數個數和參數類型