0
votes

Comment accéder aux variables d'objet fabriquées à partir de constructeurs

IM Vous avez 2 boutons, 1 utilise la classe Constructor pour Round1rock, tandis que l'autre 1 essaie d'accéder à ces paramètres. Ce qui ne va pas avec mon code?

Classe de constructeur p>

private void continueRound1 (ActionEvent event){
       ROCK round1Rock= new ROCK( 500, 100, 100, 100, "Metamorphic");
    }
    private void Attack (ActionEvent event){
        round1Rock.hp = 12;

    }


1 commentaires

Définir rock rond1rock au niveau de la classe


4 Réponses :


3
votes

Lorsque vous définissez

ROCK round1Rock = null;

private void continueRound1 (ActionEvent event){
  round1Rock= new ROCK( 500, 100, 100, 100, "Metamorphic");
}
private void Attack (ActionEvent event){
    round1Rock.hp = 12;

}


0 commentaires

0
votes

Définir Round1rock sur niveau de classe,

class someclass

{

   private ROCK round1Rock;


          -----

   private void continueRound1 (ActionEvent event){
       round1Rock= new ROCK( 500, 100, 100, 100, "Metamorphic");
    }


    private void Attack (ActionEvent event){
        round1Rock.hp = 12;

    }

           ------
}


0 commentaires

0
votes

Tout d'abord déclarer une instance de rock comme global comme celle-ci xxx pré>

La deuxième chose à l'intérieur de votre attaque d'acte d'écoute, vous ne pouvez pas accéder à la variable HP car il est peut-être privé, il est peut-être préférable de créer un setter et Méthodes getter pour votre classe de rock, utilisez-le ensuite. P>

Classe de rock: P>

 private void Attack (ActionEvent event){
            round1Rock.setHP(12); //this will update the value

  }


0 commentaires

0
votes

au lieu de créer un nouvel objet Rock dans la méthode Continueround1. Vous pouvez créer le nouvel objet Rock dans une portée de classe et définir l'accès privé. Cela résout votre question.

Conseil supplémentaire: strong> Vous créez un nouvel objet sur chaque bouton clique sur chaque bouton. Cela provoquera OutofMemoryError em> strong> si j'écris un programme pour cliquer sur le bouton indéfiniment. P>

Voici mes idées pour éviter ce problème: P>

  1. Je suppose que chaque client nécessite un nouveau rocher. Donc, créez un objet rock vide dans la classe client. LI>
  2. Dans votre constructeur client, vous pouvez initialiser l'objet Rock avec des valeurs par défaut par type de roche. Le getDefaultrockfortype vous aidera à créer autant de types de rock que vous voulez. Nous masquons donc les détails de la mise en œuvre de l'objet Rock avec certaines valeurs de la classe client à une valeur normalisée en classe Rock. li> ol>

    Voici mon code de code: p> xxx pré>

    dans votre classe de rock, vous pouvez donner vos valeurs par défaut décidées par votre type de roche. p>

    Rock de classe: P>

    public Rock getDefaultRockForType(String type){
       if(type.equals("Metamorphic")){
             this.hp=500;  
             this.stamina= 100;
             this.attack= 100;
             this.speed = 100;
             this.type = type;
       }
    }
    


0 commentaires