-Initialiser avec ** constructeur **
** * * constant (final) ** peut également être ** initialisé avec le constructeur ** Les constantes non initialisées définies dans la classe peuvent être initialisées dans le constructeur
Exemple)
public class Main{
public static void main(String[] args){
Sample a = new Sample(5);
System.out.println(a.num); //Est affiché comme 5
}
}
class Sample{
final int num; //Le champ constant n'est pas initialisé à ce stade
Sample(int num){ //int num est une variable locale avec le même nom que la variable d'instance
this.num = num; //Initialiser les constantes dans le constructeur
}
}
-Utiliser un initialiseur (initialiseur d'instance) appelé {} --S'il y a plusieurs constructeurs surchargés, un traitement commun peut être effectué en premier dans l'initialiseur d'instance.
Exemple)
public class Main{
public static void main(String[] args){
Sample a = new Sample(5); //"Exécuter l'initialiseur d'instance"
System.out.println(a.num); //5
Sample b = new Sample(); //"Exécuter l'initialiseur d'instance"
System.out.println(b.num); //10
}
}
class Sample{
final int num; //Le champ constant n'est pas initialisé à ce stade
{
System.out.println("Exécuter l'initialiseur d'instance");
}
Sample(){
this.num = 10;
}
Sample(int num){
this.num = num; //Initialiser les constantes dans le constructeur
}
}
Les champs statiques peuvent être utilisés sans créer d'instance. Par conséquent, ** ne peut pas être initialisé avec le constructeur **
→ Il est nécessaire d'initialiser avec un initialiseur statique (initialiseur)
Exemple)
public class Main{
public static void main(String[] args){
System.out.println(Sample.num); //100 et sortie
}
}
class Sample{
static final int num; //Les constantes statiques n'ont pas été initialisées à ce stade
static {
num = 100; //Initialisation des constantes statiques
}
}
** Initialiseur-> Instance Initializer-> Constructeur **
Exemple)
public class Main{
public static void main(String[] args){
User a = new User(); //Sortie "Exécution de l'initialiseur, exécution de l'initialiseur d'instance, exécution du constructeur"
}
}
class User{
private static int count;
static{
User.count = 0; //Initialiser les variables statiques
System.out.println("Exécutez l'initialiseur");
}
{
System.out.println("Exécutez l'initialiseur d'instance");
}
User(){
System.out.println("Exécuter le constructeur");
}
}
Recommended Posts