当前位置: 首页 > 知识库问答 >
问题:

用派生类创建对象数组

费锋
2023-03-14
int playerType = 0;
int highestScore = 0;
Player[] player = new Player[2]; // This is the array of type Player, the master class

Scanner userInput = new Scanner (System.in);

for (int i = 1; i < 3; i++)
{
    System.out.println ("Choose a type of player:");
    System.out.println ("1: Human");
    System.out.println ("2: Computer (Threshold = 20)");
    System.out.println ("3. Computer (Custom)");
    System.out.print ("? : ");

    playerType = Integer.valueOf(userInput.nextLine()); // gets input choice from user


  switch (playerType)
    {
      case 1:
        Human player[i] = new Human();
      case 2:
        Computer player[i] = new Computer();
      case 3:
        Karen player[i] = new Karen();
    }

}
if(playerNumber == 1){
  switch (playerType)
    {
      case 1:
        Human playerOne = new Human();
      case 2:
        Computer playerOne = new Computer();
      case 3:
        Karen playerOne = new Karen();
    }
}

if(playerNumber == 2){
  switch (playerType)
    {
      case 1:
        Human playerTwo = new Human();
      case 2:
        Computer playerTwo = new Computer();
      case 3:
        Karen playerTwo = new Karen();
    }
}
System.out.println(player[i].getName() + ", your turn");
Main.java:38: error: cannot find symbol
    System.out.println(player[i].getName() + ", your turn");
                                ^
symbol:   method getName()
location: class Player
1 error

每个类中的方法如下所示:

public class Karen extends Player {
private String playerName = "Karen";

public String getName(){
  return playerName;
}

}

共有1个答案

戈宏义
2023-03-14

感谢OldProgrammer:

更改“Human Player[i]=new Human();”到“Player[i]=new Human();”等。

理解如何派生类非常重要,我很高兴这就是它的工作方式。非常感谢你,我希望这可能会在未来帮助某人。以下是我更新的代码,以便完全澄清:

int highestScore = 0;
Player[] player = new Player[2]; 

Scanner userInput = new Scanner (System.in);

for (int i = 0; i < 2; i++)
{
    System.out.println ("Choose a type of player:");
    System.out.println ("1: Human");
    System.out.println ("2: Computer (Threshold = 20)");
    System.out.println ("3. Computer (Custom)");
    System.out.print ("? : ");

    playerType = Integer.valueOf(userInput.nextLine());

  switch (playerType)
    {
      case 1:
        player[i] = new Human();
      case 2:
        player[i] = new Computer();
      case 3:
        player[i] = new Karen();
    }

}
 类似资料:
  • #include <iostream> using namespace std; class Shape { public: virtual void draw () {} }; class Circle : public Shape { int radius; public: Circle () { radius = 1; } void draw () { cout <<

  • 尽管派生类对象也是基类对象,但是派生类类型和基类类型是不同的。在 public 继承中,派生类对象能作为基类对象处理。由于派生类具有对应每个基类成员的成员(派生类的成员通常比基类的成员多),所以把派生类的对象赋给基类对象是合理的。但是,反过来赋值会使派生类中基类不具有的成员没有定义,所以这是不允许的。尽管如此,提供正确的重载赋值运算符和(或)转换构造函数可以允许这种操作(见第8章)。 常见编程错误

  • 问题内容: 我是Java的新手,当时我用Java创建了一系列对象。 例如,我有A类 但这只是创建指向A的指针(引用),而不是4个对象。它是否正确?我看到当我尝试访问创建的对象中的函数/变量时,出现空指针异常。为了能够操作/访问对象,我必须这样做 这是正确的还是我做错了什么?如果这是正确的,那真的很奇怪。 编辑:我觉得这很奇怪,因为在C ++中,你只是说新的A [4],它创建了四个对象。 问题答案:

  • 当您导入java.util.random之后,您可以通过两种方式生成随机整数和随机double。 您可以创建Random类的一个实例

  • 我学会了通过存储基类指针将派生类指针存储在基类向量中: 但是如果我有一个抽象基类: 从中派生出另外两个抽象类。 以及来自二级抽象类的其他几个派生类: 是否有可能将它们全部存储在多态性载体中?和往常一样,我做了以下工作: 但是如何将两个多态向量存储在基类向量中呢?