欢乐一月大家,
最近我一直在从头学习Java。这真的很有趣。我已经开始创建一个基本的RPG,用户可以在其中选择和归属,以及用户是想成为战士还是法师。美好时光。
在我的主课程中,我现在有了这个新的英雄对象,它存储了用户输入的所需属性,以及他们是否想要成为战士或法师。现在我想为REFERENCE创建其他类,使用存储的变量创建新对象。我完全迷失了。
由于我不想粘贴一堆令人尴尬的蹩脚代码,我只会使用一个非常简单的例子:
这是第一堂课,用户告诉我们他的英雄有多少力量:
import java.util.Scanner;
public class HeroCreation
{
int strength;
Scanner input = new Scanner(System.in);
public void setStr()
{
System.out.println("Please tell stackoverflow how much strength you want: ");
strength = input.nextInt();
System.out.println("Your strength is: " + strength + "!");
}
}
以下是运行此方法的主要类:
public class MainClass
{
public static void main(String args[])
{
HeroCreation hero1 = new HeroCreation();
hero1.setStr();
//Here is where I want to reference another class that refers to this new hero...
}
}
在这里,我被困住了。我有这个新英雄。这个英雄有10个力量。我如何在其他帮助类中引用所述英雄?从概念上讲,我在考虑这个错误吗?
感谢您的时间和专业知识!
答案 0 :(得分:3)
一种选择是将数据保存在某个地方,无论是在数据库还是文件中。
或者创建要使用的第二个类的实例,然后将hero1传递给相关方法。
通常,当我们讨论辅助类时,我们引用使用静态工厂方法的类,这样就不必初始化它们。
答案 1 :(得分:2)
兄弟,你甚至还没有Hero
,你只拥有HeroCreation
。
为您提供几个面向对象的基本分析和设计概念:
作为一个起始设计规则,您应该为问题空间中的每个名词创建一个类或至少一个变量,并且您应该为问题空间中的每个动词创建一个方法。
在编写新代码时,首先要考虑的是#34;哪个类负责这个"?对正确的类的责任委派对于保持代码易于理解和扩展非常重要。新责任通常不属于任何现有类,因此您必须添加新类。
利用这两个规则,这里是我编写目前代码的起始版本。
<强> Hero.java 强>
public class Hero
{
private int strength;
private int intelligence;
// other attributes
public int getStrength() {
return this.strength;
}
public void setStrength(int strength) {
this.strength = strength;
}
public int getIntelligence() {
return this.intelligence;
}
public void setIntelligence(int intelligence) {
this.intelligence = intelligence;
}
// other "accessor" (get and set) methods for attributes
}
<强> HeroCreation.java 强>
import java.util.Scanner;
public class HeroCreation
{
Scanner input = new Scanner(System.in);
public int askStrength() {
return askIntegerAttribute("strength");
}
public int askIntelligence() {
return askIntegerAttribute("intelligence");
}
// ask other attribute values
private int askIntegerAttribute(String attribute) {
System.out.println("How much " + attribute + " do you want? ");
int value = input.nextInt();
System.out.println("Your " + attribute + " is: " + value + "!");
return value;
}
}
<强> Main.java 强>
public class Main
{
public static void main(String args[])
{
HeroCreation creation = new HeroCreation();
Hero hero1 = new Hero();
hero1.setStrength(creation.askStrength());
hero1.setIntelligence(creation.askIntelligence());
Hero hero2 = new Hero();
hero2.setStrength(creation.askStrength());
hero2.setIntelligence(creation.askIntelligence());
}
}
现在,您将继续向这些类添加变量和方法,这些变量和方法符合其定义的职责。并且您将继续为您遇到的其他职责创建其他课程。
答案 2 :(得分:0)
根据您的问题和您的意见,我认为您的意思是这样的:
public static class MyHelperClass {
public static void DoSomethingWithHeroStrength(HeroCreation hero)
{
int strength = hero.getStrength();
// ...
}
}