簡體   English   中英

在 Java 中,是否可以在沒有 class 和構造函數的情況下創建 object?

[英]In Java, Is it possible to create an object without a class and a constructor?

那里!

我是 Java 的新手,我最近偶然發現了構造函數的概念。 我想我理解了這個概念,但是我正在閱讀的書在 arrays 中介紹了對象的概念,我迷路了。

在示例中,本書使用構造函數new簡單地創建了一個 object。 但問題是本書將它與object 引用變量一起使用,該變量引用了不存在的 class 中的 object。

讓我用代碼寫出來。

Dog [] pets;

pets = new Dog[];

我了解創建了一個名為Dog的 object,其中包含 arrays []

什么時候,以我目前的理解應該是這樣的:

//We have a class named Dog

public class Dog{

//And We have a basic default constructor here
    public Dog(){
    }

}

//We have another class

public Class2{

//In this class we create a "reference variable" 
//to create an object from the above class named Dog.


Dog[] pets;
pets= new Dog[];

}

所以,我不知道這本書是否簡單地消除了名為Dog的 class 或者是否可以按需創建 object Dog[] ,而無需調用類/構造函數。

如果有人可以向我澄清這個概念,我將不勝感激。

謝謝閱讀!

數組不是 Java 中的 class,即使實例化它使用new關鍵字,並且沒有構造函數。 盡管如此,讓我們稍微澄清一下語法,因為您的代碼的實際含義存在一些混淆。

將數組想象成一系列串在一起的盒子。 每個盒子或element都可能包含某物的一個實例。 您需要告訴數組它的所有框都允許包含什么類型,並且您可以通過將該類型的名稱放在方括號之前來做到這一點。 在這種情況下,作者使用了虛構的Dog類型(即Dog[] ),但它也可以是IntegerString或任何其他類型。 您的代碼創建了一個數組實例,該實例能夠包含Dog或其后代類型的實例。

聲明Dog[] pets; 要求有一個 class 或名為Dog的接口。 它以Dog[]類型聲明變量pets ,這意味着pets將始終持有null或對Dog[]類型數組的引用(或者可能是諸如Chihuahua[]之類的子類型)。 您的書顯然假設Dog在其他地方定義,並讓您填寫空白。 (這很正常:書籍通常不會為每個示例提供完整的程序,因為他們不想分散他們向您展示的具體內容。)

賦值pets = new Dog[]無效:您無法創建一個數組而不說明它有多少元素,無論是使用數字( new Dog[3] )還是通過顯式列出元素( new Dog[] { null, null, null } )。

賦值pets = new Dog[3]要求有一個 class 或名為Dog的接口,但它調用任何Dog的構造函數(因為它不創建Dog ,只有Dog[] ),所以它不關心Dog是否有無參數構造函數, Dog是否是具體的 class,是否有任何Dog的構造函數是可訪問的,或者類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM