gpt4 book ai didi

java - 在Java中的构造函数中实例化不同的类

转载 作者:行者123 更新时间:2023-11-29 03:32:51 25 4
gpt4 key购买 nike

我是 Java 的新手,刚刚开始研究简单的示例程序。

如何在 B 类的构造函数中创建 A 类的实例。例如,我想在类 B 的构造函数中创建一个类 A 的对象数组。伪代码看起来像

class B {

public static A myarray;
B (int number){
myarray = new A [number];
}

编辑:

public class TestClassA {

public static int [] ArrayA = new int [6];
TestClassA () {
for (int i=0; i < 6; i++){
ArrayA[i]=i;
System.out.print("TestClassA ");
}
}
}

public class TestClassB {

public TestClassA [] A;
TestClassB (int num) {
A = new TestClassA[num];
}
}

public class Exec {

public static void main (String[] args) {

TestClassB B;
B = new TestClassB(2);

}
}

当我执行此操作时,我没有看到任何“TestClassA”消息。我希望它创建 2 个 TestClassA 数组实例,因此我应该看到 TestClassA 12 次。不确定我哪里做错了。

最佳答案

一些建议

  • 不要使用static,除非您想与类B 的每个实例共享A 对象数组。
  • 然而,您确实需要在声明引用时使用 [] 以指示它是一个 Array
  • 也将您的成员(member)字段设为私有(private)。然后通过 publicprotected getter/setter 方法控制对它们的访问。

你的代码应该是这样的

public class B {

private A[] arrayOfAobjects;

B (int number) {
arrayOfAobjects = new A[number];
}

public A[] getArrayOfAobjects() {
return arrayOfAobjects;
}
}

编辑:(在下面详细说明@MikeStrobel 的评论)
当您创建一个数组时,它会根据 Array 的类型使用默认值进行初始化。例如,对于 int [],每个数组元素都设置为 0,对于 double [],每个数组元素都设置为 0.0 , null 用于所有类型的 Object [] 对象数组。

new int[100]; // creates an Array with 100 zeroes
new A[number]; // creates an Array of size "number"
// but filled with nulls (instead of A objects)

因此,您需要自己用正确的值填充数组。在你的情况下,像

B (int number) {
arrayOfAobjects = new A[number];
for (int i=0; i < number; i++) {
arrayOfAobjects[i] = new A(); // initialize the A[] array
}
}

编辑 2:

public class TestClassB {

public TestClassA [] A;

TestClassB (int num) {
A = new TestClassA[num];
for (int i=0; i < num; i++) {
A[i] = new TestClassA(); // You need to INITIALIZE your Array
}
}
}

关于java - 在Java中的构造函数中实例化不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com