2017-07-14 1 views
0

Voici ma classe parente:Une sous-classe javascript doit-elle avoir les mêmes arguments que son parent?

class Parent { 
    constructor(id, label, header="") { 
    this.id = id; 
    this.label = label; 
    this.header = header; 
    } 
} 

Vous pouvez régler manuellement l'en-tête si vous voulez, et il sera par défaut "".

Pour certaines classes enfants, cependant, je souhaite interdire l'en-tête défini à l'instanciation. Cela fonctionnera-t-il:

class Child extends Parent { 
    constructor(id, label) { 
    super(id, label); 
    this.header = "Default Header"; 
    } 
} 

Autrement dit, le constructeur d'une classe enfant peut-il omettre certains des arguments de son parent?

+1

Vous ne tenez pas compte de la variable 'header' dans la classe parente. Est-ce une faute de frappe ou prévu? (c'est-à-dire que vous ne faites pas 'this.header = header' et ignorez-le à la place) – Svenskunganka

+0

@svenskkunganka typo, acclamations –

+1

Pourquoi ne pas l'essayer? –

Répondre

1

Pas besoin de ça. C'est ainsi que l'extension de classe fonctionne. Vous passez des attributs parent à la classe child. Quant à constructor c'est à vous de décider ce que vous voulez mettre là.

+0

'class Child extends Parent' - La classe enfant obtient les attributs Parent, pas autrement, non? – Oen44

1

Oui, vous pouvez le faire.

Vous pouvez également appeler les parents constructeur (avec 3 arguments) dans le constructeur de l'enfant:

class Child extends Parent { 
    constructor(id, label) { 
    super(id, label, "Default header"); 
    } 
}