2017-09-03 7 views
-3

J'ai cherché à appeler une variable sans créer d'instance d'objet sur StackOverflow et j'ai trouvé que la réponse était utilisez le mot-clé static pour déclarer la variable et vous pourrez appeler cette variable classe étendue sans créer d'instance de cette classe mais cela n'a pas fonctionné pour moi. Voici ce que j'ai essayé -Appeler une variable sans créer d'instance d'objet

abstract public class Flower{ 
     private static int petals; 
     public void setPetals(int petals){ 
      this.petals; 
     } 
} 

J'appelle la méthode setPetals d'une autre classe. J'ai joint comme capture d'écran cette classe. Comment puis-je appeler cette variable pétales dans la classe LotusFlower? enter image description here

+0

Il est 'private'. – user2357112

+0

Votre 'setPetal()' n'est pas 'static', et vous appelez ceci, n'accédant pas à votre variable' static' 'pétals' ... Alors ajoutez' static' à la méthode, aussi ... –

+1

Je suppose que vous avez votre de bonnes raisons de le faire, mais cela ne me semble pas un bon exemple. Si vous avez plusieurs sous-classes de 'Flower', et que chacune d'entre elles définit une valeur statique, la valeur preivous sera remplacée. –

Répondre

0

Peu de choses à améliorer:

  1. Le réglage définition de la méthode setPetals est pas statique et vous n'êtes pas réellement la valeur des pétales là:

    public static void setPetals(int petals){ 
        this.petals = petals; 
    } 
    
  2. La variable pétales est statique et peut être référencé à partir de setPetals à la place en tant que:

    Flower.petals = petals; 
    
  3. En outre, vous pouvez utiliser la méthode setPetals d'une autre classe comme:

    Flower.setPetals(100); 
    
+0

Attention: 'petals' est privé et ne peut être référencé directement d'une autre classe. –

+0

@LittleSanti la référence que j'ai faite était dans le 'setPetals'. mis à jour la réponse pour l'appeler. – nullpointer