更新時(shí)間:2022-06-22 12:52:48 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1699次
動(dòng)力節(jié)點(diǎn)小編告訴大家,類和對(duì)象是
對(duì)象對(duì)應(yīng)于現(xiàn)實(shí)世界中發(fā)現(xiàn)的事物。例如,圖形程序可能具有諸如“圓形”、“方形”和“菜單”之類的對(duì)象。一個(gè)在線購物系統(tǒng)可能有諸如“購物車”、“客戶”和“產(chǎn)品”之類的對(duì)象。
當(dāng)一個(gè)類的對(duì)象被創(chuàng)建時(shí),該類被稱為實(shí)例化。所有實(shí)例共享類的屬性和行為。但是這些屬性的值,即狀態(tài)對(duì)于每個(gè)對(duì)象都是唯一的。一個(gè)類可以有任意數(shù)量的實(shí)例。
例子:

當(dāng)我們聲明變量(類型名稱;)時(shí)。這通知編譯器我們將使用名稱來引用類型為類型的數(shù)據(jù)。對(duì)于原始變量,此聲明還為變量保留了適當(dāng)?shù)膬?nèi)存量。所以對(duì)于引用變量,類型必須是一個(gè)具體的類名。一般來說,我們不能創(chuàng)建抽象類或接口的對(duì)象。
Dog tuffy;
如果我們像這樣聲明一個(gè)引用變量(tuffy),它的值將是不確定的(null),直到一個(gè)對(duì)象被實(shí)際創(chuàng)建并分配給它。簡單地聲明一個(gè)引用變量并不會(huì)創(chuàng)建一個(gè)對(duì)象。
new 運(yùn)算符通過為新對(duì)象分配內(nèi)存并返回對(duì)該內(nèi)存的引用來實(shí)例化一個(gè)類。new 運(yùn)算符還調(diào)用類構(gòu)造函數(shù)。
// Class Declaration
public class Dog
{
// Instance Variables
String name;
String breed;
int age;
String color;
// Constructor Declaration of Class
public Dog(String name, String breed,
int age, String color)
{
this.name = name;
this.breed = breed;
this.age = age;
this.color = color;
}
// method 1
public String getName()
{
return name;
}
// method 2
public String getBreed()
{
return breed;
}
// method 3
public int getAge()
{
return age;
}
// method 4
public String getColor()
{
return color;
}
@Override
public String toString()
{
return("Hi my name is "+ this.getName()+
".\nMy breed,age and color are " +
this.getBreed()+"," + this.getAge()+
","+ this.getColor());
}
public static void main(String[] args)
{
Dog tuffy = new Dog("tuffy","papillon", 5, "white");
System.out.println(tuffy.toString());
}
}
輸出:
Hi my name is tuffy.
My breed,age and color are papillon,5,white
此類包含一個(gè)構(gòu)造函數(shù)。我們可以識(shí)別構(gòu)造函數(shù),因?yàn)樗穆暶魇褂门c類相同的名稱并且它沒有返回類型。Java 編譯器根據(jù)參數(shù)的數(shù)量和類型來區(qū)分構(gòu)造函數(shù)。Dog類中的構(gòu)造函數(shù)有四個(gè)參數(shù)。以下語句提供“tuffy”、“papillon”、5、“white”作為這些參數(shù)的值:
Dog tuffy = new Dog("tuffy","papillon",5, "white");
執(zhí)行此語句的結(jié)果可以說明為:

注意:所有類都至少有一個(gè)構(gòu)造函數(shù)。如果一個(gè)類沒有顯式聲明,Java 編譯器會(huì)自動(dòng)提供一個(gè)無參數(shù)構(gòu)造函數(shù),也稱為默認(rèn)構(gòu)造函數(shù)。這個(gè)默認(rèn)構(gòu)造函數(shù)調(diào)用類父類的無參數(shù)構(gòu)造函數(shù)(因?yàn)樗话粋€(gè)語句,即 super();),或者如果類沒有其他父類則調(diào)用Object類構(gòu)造函數(shù)(因?yàn)?Object 類是所有類的父類,或者直接或間接)。
在java中有四種創(chuàng)建對(duì)象的方法。嚴(yán)格來說只有一種方式(使用new關(guān)鍵字),其余的在內(nèi)部使用new關(guān)鍵字。
使用 new 關(guān)鍵字:這是在 java 中創(chuàng)建對(duì)象的最常見和通用的方法。例子:
// 創(chuàng)建類 Test 的對(duì)象
Test t = new Test();
使用 Class.forName(String className) 方法: java.lang 包中有一個(gè)名為 Class 的預(yù)定義類。forName(String className) 方法返回與具有給定字符串名稱的類關(guān)聯(lián)的 Class 對(duì)象。我們必須為一個(gè)類提供一個(gè)完全限定的名稱。在此 Class 對(duì)象上調(diào)用 new Instance() 方法時(shí),將返回具有給定字符串名稱的類的新實(shí)例。
// 創(chuàng)建公共類 Test 的對(duì)象
// 考慮com.p1包中存在的類 Test
Test obj = (Test)Class.forName("com.p1.Test").newInstance();
使用 clone() 方法: object 類中存在 clone() 方法。它創(chuàng)建并返回對(duì)象的副本。
// 創(chuàng)建類 Test 的對(duì)象
Test t1 = new Test();
// 創(chuàng)建上述對(duì)象的克隆
Test t2 = (Test)t1.clone();
反序列化:反序列化是一種從文件中的保存狀態(tài)讀取對(duì)象的技術(shù)。
FileInputStream file = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(file);
對(duì)象 obj = in.readObject();
在實(shí)時(shí)中,我們需要一個(gè)類的不同對(duì)象在不同的??方法中。創(chuàng)建多個(gè)引用來存儲(chǔ)它們并不是一個(gè)好習(xí)慣,因此我們聲明一個(gè)靜態(tài)引用變量并在需要時(shí)使用它。在這種情況下,內(nèi)存的浪費(fèi)更少。不再引用的對(duì)象將被java的垃圾收集器銷毀。例子:
測試 test = new Test();
測試 = 新測試();
在繼承系統(tǒng)中,我們使用父類引用變量來存儲(chǔ)子類對(duì)象。在這種情況下,我們可以使用相同的引用變量切換到不同的子類對(duì)象。例子:
類動(dòng)物{}
類狗擴(kuò)展動(dòng)物{}
類貓擴(kuò)展動(dòng)物{}
公開課測試
{
// 使用 Dog 對(duì)象
動(dòng)物 obj = new Dog();
// 使用貓對(duì)象
obj = 新貓();
}
匿名對(duì)象是被實(shí)例化但不存儲(chǔ)在引用變量中的對(duì)象。
它們用于立即方法調(diào)用。
它們將在方法調(diào)用后被銷毀。
它們廣泛用于不同的庫中。例如,在 AWT 庫中,它們用于在捕獲事件時(shí)執(zhí)行某些操作(例如按鍵)。
在下面的例子中,當(dāng)一個(gè)鍵是按鈕(由btn引用)被按下時(shí),我們只是創(chuàng)建了EventHandler類的匿名對(duì)象來調(diào)用handle方法。
btn.setOnAction(新事件處理程序()
{
公共無效句柄(ActionEvent 事件)
{
System.out.println("Hello World!");
}
});
以上就是關(guān)于“Java中的類和對(duì)象”的介紹,大家如果對(duì)此比較感興趣,想了解更多相關(guān)知識(shí),不妨來關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java教程,里面有更豐富的知識(shí)等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)