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