Java 如何在其他类中使用对象?

Java 如何在其他类中使用对象?,java,methods,constructor,Java,Methods,Constructor,我刚开始学习java,这只是一个简单的问题,但我必须为学校做一个小项目。我上了两门课,一门叫神奇宝贝,一门叫训练师。在Pokémon类中,我创建了一个构造函数和一个方法来创建对象,因为我不能只创建对象: public class Pokemon { public String name; public String typ; public int maxLp; public int aktLp; public int ap; publi

我刚开始学习java,这只是一个简单的问题,但我必须为学校做一个小项目。我上了两门课,一门叫神奇宝贝,一门叫训练师。在Pokémon类中,我创建了一个构造函数和一个方法来创建对象,因为我不能只创建对象:

    public class Pokemon {

    public String name;
    public String typ;
    public int maxLp;
    public int aktLp;
    public int ap;

    public Pokemon(String pname, String ptyp, int pmaxLp, int paktLp, int pap) {
        name=pname;
        typ=ptyp;
        maxLp=pmaxLp;
        aktLp=paktLp;
        ap=pap;
    }
    
    public void CreatePokemon(String[] args) {
    Pokemon Squirtle = new Pokemon("Squirtle", "Water", 20, 20, 5);
    Pokemon Charmander = new Pokemon("Charmander", "Fire", 20, 20, 5);
   }
}
在另一个类中,Trainer,我想使用这些创建的对象(口袋妖怪Squirtle和口袋妖怪Charmander)让它们战斗,“战斗”基本上只是一个口袋妖怪,我想在函数Squirtle attack中使用Squirtle,攻击Charmander造成与ap中声明的一样多的伤害,更改对象Glumanda中的变量aktLp,这是glumanda的当前hp:

public class Trainer
{

    public String name;
    public String gender;
    public int money;
    public int amountPokemon;
    public int amountFights;
    
    public Trainer(String tname, String tgender, int tmoney, int tamountPokemon, int tamountFights) {
        name=tname;
        gender=tgender;
        money=tmoney;
        amountPokemon=tamountPokemon;
        amountFights=tamountFights;
    }
    
    public void ChooseSquirtle() {
        System.out.println("You choose Squirtle!");
    }
    
    public void ChooseCharmander() {
        System.out.println("You choose Charmander!");
    }
    
    public void SquirtleAttack() {
        System.out.println("Squirtle attacks Charmander!");
        Charmander.aktLp = Charmander.aktLp - Squirtle.ap;
    }
}

所以对于这个项目,我必须使用BlueJ,即使我不喜欢它。BlueJ说:“找不到符号-变量Glumanda”-但为什么?我必须调用CreatePokemon()方法吗?我想我必须这么做,并添加了CreatePokemon(),按下compile,出现了另一个错误,但没有任何解释。我找不到这个问题,尽管它可能很容易。正如我所说的,我刚刚开始学习java,因此非常感谢您提供的提示。此外,我尽了最大努力翻译变量,如果您不理解这些变量,并且这些变量不符合要求,那么很抱歉。

您的代码不是很抽象,并且有一些缺陷:

  • 您正在pokemon类定义中创建pokemon对象。你应该做的是用一些更高级的方法来创建它,例如:
    main
  • 训练师课程使用两个口袋妖怪互相攻击。问题是,口袋妖怪类还没有在培训师可以访问的范围内实例化。相反,您应该在trainer类中实例化一个新的口袋妖怪,或者将口袋妖怪对象作为参数传递给通用攻击函数
培训师可以在里面实例化新的口袋妖怪

课堂培训师{
公共字符串名称;
社会性别;
公共货币;
公共智能口袋妖怪;
公众斗殴;
私人口袋妖怪;
私人口袋妖怪魔术师;
公共培训师(弦乐名称、弦乐特根德、内特特莫尼、内特塔蒙特口袋妖怪、内特塔蒙特斗殴){
name=tname;
性别=性别;
金钱=金钱;
amountPokemon=tamountPokemon;
数量战=数量战;
squirtle=新口袋妖怪(“squirtle”,“水”,20,20,5);
charmander=新口袋妖怪(“charmander”,“Fire”,20,20,5);
}
public void ChooseSquirtle(){
System.out.println(“您选择Squirtle!”);
}
公共void ChooseCharmander(){
System.out.println(“您选择Charmander!”);
}
公共空间喷射器打击(){
System.out.println(“Squirtle攻击Charmander!”);
charmander.aktLp=charmander.aktLp-squirtle.ap;
}
}
或者像这样接受口袋妖怪作为参数:


班主任{
公共字符串名称;
社会性别;
公共货币;
公共智能口袋妖怪;
公众斗殴;
公共培训师(弦乐名称、弦乐特根德、内特特莫尼、内特塔蒙特口袋妖怪、内特塔蒙特斗殴){
name=tname;
性别=性别;
金钱=金钱;
amountPokemon=tamountPokemon;
数量战=数量战;
}
public void SquirtleAttack(口袋妖怪攻击者、口袋妖怪防御者){
System.out.println(attacker.name+“attacks”+defender.name+“!”;
defender.aktLp=defender.aktLp-attacker.ap;
}
}
公共班机{
public void CreatePokemon(字符串[]args){
口袋妖怪;
口袋妖怪;
squirtle=新口袋妖怪(“squirtle”,“水”,20,20,5);
charmander=新口袋妖怪(“charmander”,“Fire”,20,20,5);
}
}
只是一些提示:

  • 不确定项目结构是什么,但一个文件中不能有两个公共类。公共类必须与文件名同名。但是,在一个文件中可以有多个非公共类。但通常不建议在一个文件中定义多个类
  • 根据Java命名约定,应该使用小写字母命名变量或对象实例。阅读更多:
  • 尽可能少地使用公共类属性,尽可能多地使用私有类属性。要操作私有属性值,请使用getterssetters。更多信息请点击此处:
请在您的问题中包含出现错误的代码。实际上,您还没有包含任何定义或尝试使用“Glumanda”的内容。