在Java中,是否可以在没有类和构造函数的情况下创建对象?
那里 我是Java新手,最近偶然发现了构造函数的概念。我想我理解这个概念,但我正在读的那本书介绍了数组中对象的概念,我迷路了 在示例中,本书仅使用构造函数在Java中,是否可以在没有类和构造函数的情况下创建对象?,java,class,object,constructor,new-operator,Java,Class,Object,Constructor,New Operator,那里 我是Java新手,最近偶然发现了构造函数的概念。我想我理解这个概念,但我正在读的那本书介绍了数组中对象的概念,我迷路了 在示例中,本书仅使用构造函数new创建一个对象。但问题是,本书将其与引用不存在类中对象的对象引用变量一起使用 让我用代码来写 Dog [] pets; pets = new Dog[]; 我知道创建了一个名为Dog的对象,其中包含数组[] 在我目前的理解中,应该是这样的: //We have a class named Dog public class Dog{
new
创建一个对象。但问题是,本书将其与引用不存在类中对象的对象引用变量一起使用
让我用代码来写
Dog [] pets;
pets = new Dog[];
我知道创建了一个名为Dog
的对象,其中包含数组[]
在我目前的理解中,应该是这样的:
//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
的类,或者是否可以根据需要创建一个对象Dog[]
,而无需调用类/构造函数
如果有人能向我澄清这个概念,我将不胜感激
谢谢你的阅读 数组在Java中不是类,即使实例化它使用
new
关键字,并且没有构造函数。但是,撇开这一点不谈,让我们稍微澄清一下语法,因为对于代码的实际含义存在一些混淆
把一个数组想象成一系列串在一起的盒子。每个框或
元素
,都可能包含某个对象的实例。您需要告诉数组允许其所有框包含的类型,并将该类型的名称放在方括号之前。在本例中,作者使用了一个虚构的狗
类型(即狗[]
),但它也可以是整数
、字符串
,或任何其他类型。您的代码创建了一个数组实例,该数组能够包含Dog
或其后代类型的实例。数组在Java中不是类,即使实例化它时使用new
关键字,并且没有构造函数。但是,撇开这一点不谈,让我们稍微澄清一下语法,因为对于代码的实际含义存在一些混淆
把一个数组想象成一系列串在一起的盒子。每个框或
元素
,都可能包含某个对象的实例。您需要告诉数组允许其所有框包含的类型,并将该类型的名称放在方括号之前。在本例中,作者使用了一个虚构的狗
类型(即狗[]
),但它也可以是整数
、字符串
,或任何其他类型。您的代码创建一个数组实例,该数组能够包含Dog
或其后代类型的实例。声明Dog[]pets
要求有一个名为Dog
的类或接口。它用类型Dog[]
声明变量pets
,这意味着pets
将始终保持null
或对类型Dog[]
的数组的引用(或者可能是一个子类型,例如Chihuahua[]
)。你的书显然假设Dog
是在别处定义的,让你来填补空白。(这是很正常的:书籍通常不会针对每一个例子都呈现完整的程序,因为它们不想分散你对所展示的特定内容的注意力。)
赋值pets=new Dog[]
无效:您不能创建一个数组而不说明它有多少个元素,或者使用一个数字(new Dog[3]
),或者通过显式列出元素(new Dog[]{null,null,null}
)
赋值
pets=newdog[3]
要求有一个名为Dog
的类或接口,但它不调用任何Dog
的构造函数(因为它不创建Dog
,只创建Dog[]
),所以它不关心Dog
是否有无参数构造函数,无论Dog
是否是一个具体的类,是否可以访问Dog
的任何构造函数,或者诸如此类的东西。声明Dog[]pets
要求有一个名为Dog
的类或接口。它用类型Dog[]
声明变量pets
,这意味着pets
将始终保持null
或对类型Dog[]
的数组的引用(或者可能是一个子类型,例如Chihuahua[]
)。你的书显然假设Dog
是在别处定义的,让你来填补空白。(这是很正常的:书籍通常不会针对每一个例子都呈现完整的程序,因为它们不想分散你对所展示的特定内容的注意力。)
赋值pets=new Dog[]
无效:您不能创建一个数组而不说明它有多少个元素,或者使用一个数字(new Dog[3]
),或者通过显式列出元素(new Dog[]{null,null,null}
)
赋值
pets=newdog[3]
要求有一个名为Dog
的类或接口,但它不调用任何Dog
的构造函数(因为它不创建Dog
,只创建Dog[]
),所以它不关心Dog
是否有无参数构造函数,无论Dog
是否是一个具体的类,是否可以访问Dog
的任何构造函数,或者诸如此类的东西。未创建包含数组的名为Dog的对象,创建了一个包含狗的数组对象。你能详细介绍一下你的目标吗?@Ashish Sharma我的主要问题是,如果有可能创建一个对象,那么在本例中,可以创建一个数组对象,而不需要将类和构造函数作为引用。因为构造函数的基本定义是“Java构造函数是一种特殊的方法,在对象不稳定时调用