java如何知道对象实例使用哪种类型的变量?
package RPG;
import java.util.Random;
import java.util.Scanner;
public class Beginnings
{
public static boid main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Pick a class:");
System.out.println("Fighter: Deals more damage");
System.out.println("Mage: Has more health");
System.out.println("Theif: Deals less damage but has more health");
String Class = scan.nextLine();
if (Class.matches(".*Fighter.*"));
Fighter user = new Fighter();
else if (Class.matches(".*Mage.*"));
Mage user = new Mage();
else if (Class.matches(".*Thief.*"));
Thief user = new Thief();
else
Human user = new Human();
user.Name();
user.Explore();
/*当我运行代码时,它突出显示第一个“用户”,并说“此处不允许变量声明” 我不知道怎么解决这个问题。 */
# 1 楼答案
你有一些拼写错误,可能会造成问题
应该是
及
应该是
此外,大写
Class()
和小写class
也已经是JavaSDK中的东西了。您应该使用不同的变量名。我在下面的示例中使用了characterStr
。标准实践规定,应该使用camelcase命名变量,使用大写命名Java类。当实例化Class()
对象时,人们通常将其实例化为Class clazz = new Class()
接下来,我认为您应该为不同的用户类创建一个超级类。设置如下内容:
这样,
main()
中的代码就可以使用Character()
对象# 2 楼答案
变量的类型必须是可能分配给它的所有对象的公共基类。由于类
Object
是所有其他类的基类,因此可以执行以下操作:但这可能不是一个好主意
您可能应该从基类派生
Fighter
、Mage
等,比如Character
。也可以使用接口而不是基类# 3 楼答案
假设“用户”是一个拥有“职业”(即战士/法师)的玩家。我将创建一个单独的player类并存储该信息
# 4 楼答案
第一个问题:如果不将声明放在括号之间,则无法在
if
语句的then
中声明变量。编译器不接受它第二个问题:如果希望在最后调用实例化实例上的方法,则应在
if-else-if
之前声明一个变量,如下所示:在每个
if
中,您应该实例化合适的子用户类,并将其分配给上面声明的user
变量在Java中,方法应该以小写字母开头。我修改了它。 代码假定
User
是父类,而您在条件语句中实例化的类是User
的子类。User
应该定义name()
方法和explore()
方法