诸位!我是Java新手,最近偶然发现了构造函数的概念。
我是Java新手,最近偶然发现了构造函数的概念。我自认为理解了这个概念,但我正在看的书中介绍的是 数组中的对象 我就迷路了。
在例子中,书中只是简单地使用构造函数创建了一个对象 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[]
而无需调用classconstructor。
如果有人能给我澄清这个概念,我会很感激。
谢谢你的阅读!
宣言 Dog[] pets;
需要有一个名为 Dog
. 它声明了变量 pets
种类 Dog[]
意思是 pets
将永远保持 null
类型的数组的引用,或对 Dog[]
(或者是一个子类型,如 Chihuahua[]
). 你的书显然是在假设 Dog
的定义,让你填空。这是很正常的:书上通常不会为每个例子展示整个程序,因为他们不想分散你对具体事物的注意力)。
作业 pets = new Dog[]
是无效的:你不能创建一个数组而不说它有多少元素,要么用一个数字(new Dog[3]
)或通过明确列出元素(new Dog[] { null, null, null }
).
转让 pets = new Dog[3]
需要有一个名为 Dog
但它确实 不 呼叫任何 Dog
的构造函数(因为它没有创建一个新的 Dog
惟有 Dog[]
),所以它不关心是否 Dog
有一个无参数的构造函数,无论 Dog
是一个具体的类,无论任何 Dog
的构造函数是可访问的,或者类似的东西。
数组在Java中并不是一个类,尽管实例化它时使用了 new
关键字,而且没有构造函数。撇开这些不谈,我们先来澄清一下语法,因为有些人对你的代码的实际含义感到困惑。
想象一个数组是一系列串在一起的盒子。每个盒子,或者 element
的实例,可能包含一个 东西. 你需要告诉数组它的所有盒子都允许包含什么类型,你可以通过在方括号前加上该类型的名称来实现。在本例中,作者使用了一个虚构的 Dog
型(即 Dog[]
),但它也可以是 Integer
, String
或任何其他类型。你的代码创建了一个数组的实例,这个数组能够包含以下类型的实例。Dog
或其后代类型。