2017-07-07 2 views
-1

Comment créer une instance d'une classe à utiliser comme attribut dans une autre classe? Je crois que ce que je dois faire:Comment créer une instance de classe et l'implémenter dans une sous-classe?

ClassA a1 = new ClassA(); // ClassA is the super class 

C'est là que je suis bloqué, si mon code ci-dessus est encore correct. Comment est-ce que je l'utilise réellement dans une sous-classe de ClassA, disons ClassB? Donc, si ClassA a «nom» et «âge» et que ClassB a «locataire», que dois-je faire pour donner un nom et un âge au locataire?

+2

https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html – GriffeyDog

+0

Vous avez obtenu quatre réponses et n'avez pas voté ou accepté - pourquoi? –

Répondre

0

Si ClassB extends ClassA puis ClassB héritera toutes les propriétés de ClassA. Voici un exemple rapide:

public class ClassA { 

    private String name; 
    private int age; 

    public ClassA(String name, int age) 
      this.name = name; 
      this.age = age; 
    } 

    public String getName() { 
      return name; 
    } 

    public int ageGetAge() { 
      return age; 
    } 
} 

public class ClassB extends ClassA { 

    private String tenant; 

    public ClassB(String name, int age, String tenant) { 
      super(name, age); 
      this.tenant = tenant; 
    } 

    public String getTenant() { 
      return tenant; 
    } 
} 

Pour ces classes, si vous créez un objet ClassB dans une partie de votre programme, vous serez en mesure d'appeler les méthodes getName() et getAge() parce ClassB extends ClassA.

public static void main(String[] args) { 
    ClassB object = new ClassB("me", 0, "you"); 
    System.out.println(object.getName()); 
    System.out.println(object.getAge() + ""); 
    System.out.println(object.getTenant()); 
} 

Ce bit de code renverrait les suivantes:

me 
0 
you 

Il y a peu différentes façons d'aller à ce sujet, selon que diverses variables sont protected, private ou public. Je recommanderais de lire plus sur la visibilité et autres.

Bonne chance avec vos endevours.

+0

C'est tout à fait normal, mais que se passe-t-il si ma main est séparée de ClassA et ClassB? J'ai donc besoin de donner à ClassB les valeurs d'instance de ClassA avec les siennes. – MNewbie

+0

Voulez-vous dire transformer un objet ClassA en un objet ClassB? Le code ci-dessus fonctionnera si la méthode principale est dans une classe séparée de ClassA & ClassB –

+0

Merci, je pense que je l'ai! – MNewbie

0

Si la classe B étend la classe A, vous pouvez accéder automatiquement le nom et les éléments de l'âge de la classe B tant qu'ils ne sont pas privés lorsqu'elles sont déclarées dans la classe A

Vous pouvez juste faire bien classBInstance.name = "bob";

0

La classe B hérite de la classe A. donc dans votre constructeur pour la classe B vous avez appelé le constructeur de la super classe en utilisant Super() puis quand vous voulez utiliser les attributs de la super classe dans la sous classe, vous utiliseriez super, super .getAttribute() par exemple

0

Vous pouvez utiliser l'idée de classes et sous-classes s, et l'utilisation de champs protégés:

public class ClassA { 

    protected String name; 
    protected int age; 

    public ClassA(String name, int age) { 
     this.name = name; 
     this.age = age; 
    } 
} 

public class ClassB extends ClassA { 

    private String tenant; 


    public ClassB(String name, int age, String tenant) { 
     super(name, age); 
     this.tenant = tenant; 
    } 

    public static void main(String[] args) { 
     ClassB b = new ClassB("Carol", 23, "some tenant"); 
     String tenant = b.tenant; 
     int age = b.age; 
     String name = b.name; 

    } 
}