Chapitre 5 - Class Design Flashcards
Les règles des constructeurs
- le premier statement de tout les constructeurs c’est soit un this soit un super
- super ne peut pas être appelé en deuxième toujours en premier
- si aucun super() est dans le constructeur java va inséré un super sans argument au premier statement
- si un parent n’a pas de constructeur sans argument, le compilateur a absolument besoin d’un call d’un constructeur parent dans chacun des enfants
Vrai ou faux ? Java permet l’héritage multiple ?
Faux, mais il permet aux classes d’implémenter plusieurs interfaces !
Que peut-on avoir dans une interface ?
- abstract method
- default method
- constant variables
- static method
Comment définit-on une interface ?
public (or default access modifier) abstract (assumed) interface InterfaceName
Comment définit on une interface ?
- une interface ne peut pas être final
- une interface n’a pas l’obligation d’avoir des méthodes
- ne peut pas avoir de méthodes private, protected, final
- les méthodes non default d’une interface sont forcément abstraites et public.
- une méthode d’une interface peut être static
Que veut dire covariant et qu’est ce qui doit être covariant ?
Covariant veut dire une sous classe ou une implémentation d’une interface.
Integer est covariant à Number
Number n’est pas covariant à Integer
Quand on override une méthode, il faut que le type de retour de la classe fille est covariant du type de retour de classe mère
Que doit on vérifier quand on override une méthode dans une classe fille ?
On doit vérifier :
- que le type de retour de classe fille soit covariant au type de retour de la classe mère
- que le modificateur d’accès sois égale ou plus accessible dans la classe fille
- que si la classe mère throw une exception, si la classe fille doit throw une exception (pas obligatoire), elle doit etre la même ou une sous classe.
C’est quoi le format d’une DateTime formatté avec le FormatStyle.SHORT ?
mm/dd/yy hh:mm AM ou PM
C’est quoi le format d’une DateTime formatté avec le format FormatStyle.MEDIUM ?
MMM dd, yyyy hh:mm:ss AM ou PM
Qu’est ce qui est important de savoir sur les catchs ?
- On doit bien mettre les exceptions parents tout en bas dans le try catch sinon ça ne compile pas !!!!
- Si on throw dans un catch, l’exception ne se fait pas catch dans reste des catch !!!
Qu’est ce qu’un anonymous initializer ?
C’est un initializer d’Array sans le mot clé New. Seulement possible à la déclaration.
Quelles sont les règles de l’overriding de méthode non private ?
- la méthode dans la classe enfant doit avoir la même signature que la méthode de la classe parent (signature = nom de la méthode et même paramètres)
- la méthode de l’enfant doit être au moins aussi accessible)
- la méthode dans la classe enfant ne peut pas throw une checked exception qui est nouvelle ou une classe parent de l’exception lancé par la méthode de la classe parent
- la méthode dans la classe enfant doit retourner une valeur qui doit être la même ou une sous classe que le type de retour de la classe parent
Quelles sont les 5 règles du hiding de method ?
- la méthode dans la classe enfant doit avoir la même signature que la méthode de la classe parent
- la méthode dans la classe enfant doit être au moins aussi accessible que la méthode dans la classe parent
- la méthode dans la classe enfant ne peut throw une checked exception qui est nouvelle ou qui est une exception parent à l’exception throw par la classe parent
- si la méthode retourne une valeur elle doit être covariante à la valeur de retour de la méthode parente
- la méthode dans la classe enfant doit être forcément statique sinon ça compile pas
Peut-on override une variable ?
Non, java ne permet que de hide une variable
Qu’est ce qui est assumé dans une interface ?
- méthode sont public abstract
- variable sont public static final