public class MyClass{...}
class MyHelper{...}
Classe englobante.Classe imbriquée (MyClass.MyHelper)
**import (nom du package) .MyClass.MyHelper;
var h = new MyHelper ();
//Définition de MyHelper sous le bloc de classe
public class MyClass {
//Définition de la classe de membre statique
//Les membres ne peuvent pas être vus de l'extérieur de Ma classe
private static class MyHelper {
public void show() {
System.out.println("Nested class is running!");
}
}
public void run() {
//MyHelper peut être appelé à l'intérieur du boîtier
var helper = new MyHelper();
helper.show();
}
}
public class NestBasic {
public static void main(String[] args) {
var c = new MyClass();
c.run();
//MyHelpe est invisible de l'extérieur de MyClass
// var h = new MyClass.MyHelper(); //Erreur!
}
}
class MyClass {
private String str1 = "Instance englobante";
private static String str2 = "Classe englobante";
private class MyHelper {
private String str1 = "Instance imbriquée";
private static final String str2 = "Classe imbriquée";
public void show() {
//La classe interne a une référence à l'objet englobant
//MyClass.Accessible avec ceci
System.out.println(MyClass.this.str1); //Instance englobante
System.out.println(MyClass.str2); //Classe englobante
}
}
public void run() {
//Instance de classe interne créée en englobant la méthode d'instance de classe
var helper = new MyHelper();
helper.show();
//Accéder à la classe interne à partir de l'objet englobant
System.out.println(helper.str1); //Instance imbriquée
System.out.println(MyHelper.str2); //Classe imbriquée
}
}
public class NestedAccess {
public static void main(String[] args) {
var c = new MyClass();
c.run();
}
}
java:java.util.AbstractList.java
package java.util;
import java.util.function.Consumer;
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
//...Omission
/*Iterators
Pas besoin de montrer l'implémentation interne de la classe Itr
Ce serait bien si le type Iterators, qui est la source d'implémentation, pouvait être vu de l'extérieur.
La valeur de retour de la méthode iterator est le type Iterator
*/
public Iterator<E> iterator() {
return new Itr();
}
//...Omission
/*Classe intérieure
Implémentation d'un itérateur qui accède au champ privé dans la liste et accède aux éléments subordonnés dans l'ordre
Iterator est défini séparément en tant que classe d'implémentation Iterator
*/
private class Itr implements Iterator<E> {
//...Omission
}
//...Omission
}
nouvelle classe de base (argument, ...) {corps de la classe}
**
new View.OnClickListener(){
//Inscription des écouteurs d'événements
btn.setOnClickListener(
//Classe anonyme(Écouteur d'événements)Définition
new View.OnClickListener(){
//btn Cliquez pour afficher l'heure actuelle en txt
@Override
public void onClick(View view){
TextView txt = findViewById(R.id.txtResult);
txt.setText(LocalDateTime.now().toString());
}
}
);
Recommended Posts