【问题标题】:Java OOP; creating array of objectsJava面向对象;创建对象数组
【发布时间】:2021-07-30 06:16:29
【问题描述】:

我想创建一个对象数组,其中 3 个对象来自一个类,第 4 个对象来自第二个类。

在第一堂课中,我做了以下事情:

public class Pupil {
        public int n= 0;

        Pupil(int n) {
            this.n = n;} 
}

在第二节课中,我做了以下事情:

public class Tutor {
        public int m= 0;

        Tutor(int m) {
            this.m = m;} 
}

在主类中,我创建了几个学生对象和一个导师对象,如下所示:

public class Main {
    public static void main (String[] args) {
        //Pupil(n) while for tutor objects it'd be Tutor(m) 
Pupil pupil1 = new Pupil(9);
Pupil pupil2 = new Pupil(8);
Pupil pupil3 = new Pupil(6); 
Tutor tutor1 = new Tutor(2);

在 main 中使用对象进行打印可以正常工作。

但我想创建第四个类,在其中将它们分组到对象数组中,但它不会看到我创建的用于从中创建组的对象。我也不确定创建对象数组的格式。

public class Groups {

    public static void main(String [] args){



    Pupil [] g1 = {tutor1, pupil1, pupil2, pupil3};
    //cannot resolve any symbols 
    }
}

编辑:根据我的导师的说法,groups 类应该是静态的来解决这个问题,但我不确定如何实际编写代码?

Edit2:答案指出数组应该是 Object,因为上面的代码只能创建一个学生数组,而不是学生和导师对象。

Object [] g1 = {tutor1, pupil1, pupil2, pupil3};

但这仍然不能解决从组类中看不到任何对象的主要问题(//无法解析任何符号)

【问题讨论】:

  • Pupil和Tutor之间有什么关系吗?
  • @AhmedHENTETI 我已将问题编辑得更清楚。

标签: java arrays class oop static


【解决方案1】:

Java 是一种强类型编程语言,因此您不能将不同类型的对象添加到同一个集合中。但是您利用了 OPP 多态性原理。您可以创建一个父类并从父类扩展您的子类。

父类

public class Group {
}

子类

public class Pupil extends Group {

    public int m = 0;

    public Pupil(int m) {
        this.m = m;
    }

}
public class Tutor extends Group {

    public int n = 0;

    public Tutor(int n) {
        this.n = n;
    }

}

所以这样你就可以按如下方式使用它:

public class TestSchool {

    public static void main(String[] args) {
        Pupil pupil1 = new Pupil(9);
        Pupil pupil2 = new Pupil(8);
        Pupil pupil3 = new Pupil(6);
        Tutor tutor1 = new Tutor(2);
        Tutor tutor2 = new Tutor(2);

        Group[] groupArray = {pupil1, pupil2, pupil3, tutor1, tutor2};
    }
}

【讨论】:

    【解决方案2】:

    数组只能包含相同类型的对象。话虽如此,这是一种方法:

    Object[] g1 = {tutor1, pupil1, pupil2, pupil3};
    

    【讨论】:

    • 抱歉,我的声明和这个有区别吗?
    • 您声明了一个Pupils 数组,并试图将导师和学生放入其中。你不能这样做,因为导师不是学生。它们不一样。他们只有一个共同点,那就是:他们都是Object。您必须声明一个 Object 数组才能将它们放在同一个数组中。
    • 很公平,但组类仍然看不到任何对象来创建数组。
    • 我不明白。请详细说明。
    • 因为您没有在Groups 中声明它们。您在Main 中声明了它们。
    猜你喜欢
    • 2021-07-29
    • 2020-12-17
    • 1970-01-01
    • 2020-03-14
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多