(Ouvrage de référence d'étude: tutoriel pratique Java2 cinquième édition)
Un, classe interne
Java prend en charge la définition d'une classe dans une autre classe, une telle classe est appelée une classe interne et la classe contenue dans la classe interne est appelée une classe externe de la classe interne. La relation entre la classe interne et la classe intégrée externe est la suivante:
- Les variables membres de la classe externe sont toujours valides dans la classe interne, et les méthodes de la classe interne peuvent également appeler les méthodes de la classe externe
- Les variables de classe et les méthodes de classe (statiques) ne peuvent pas être déclarées dans le corps d'une classe interne. La classe externe peut utiliser la classe interne pour déclarer l'objet en tant que membre de la classe externe
- La classe interne n'est utilisée que par sa classe externe, les autres classes ne peuvent pas utiliser la classe interne d'une certaine classe pour déclarer des objets
Le fichier bytecode de la classe interne généré par le compilateur Java est différent de la classe habituelle (nom de classe.class), mais le nom de classe externe $ nom de classe interne.class
a et seules les classes internes peuvent être modifiées comme classes statiques, et programme peut utiliser la classe interne statique pour créer des objets dans d'autres classes. Les classes internes statiques ne peuvent pas manipuler les variables de membre d'instance des classes incorporées externes.
Deux, classe anonyme
Java vous permet de créer un objet de sous-classe directement en utilisant le corps de classe d'une sous-classe d'une classe. Cela signifie qu'en plus de la méthode de construction de la classe parent, il existe également des corps de classe qui peuvent créer des objets de sous-classe. Ce corps de classe est considéré comme une sous-classe sans déclaration de classe et est appelé une classe anonyme. Une classe anonyme est une sous-classe . Comme aucun nom n'est disponible, il est impossible de déclarer un objet à l'aide d'une classe anonyme, mais un objet peut être créé directement. Ce qui suit est de créer un objet avec une classe anonyme:
new 父类名() {
匿名类的类体
};
L'objet créé par la classe anonyme ne peut être utilisé que comme objet de transformation supérieur en tant que paramètre de méthode pour simplifier le code.
(1) Caractéristiques des classes anonymes
- Une classe anonyme peut hériter des méthodes de la classe parente ou remplacer les méthodes de la classe parente.
- Lorsqu'une classe anonyme est utilisée, elle doit être directement utilisée pour créer un objet dans une certaine classe, la classe anonyme doit donc être une classe interne.
- Les classes anonymes peuvent accéder aux variables membres et aux méthodes des classes externes, et les variables et méthodes membres statiques ne peuvent pas être déclarées dans le corps de classe des classes anonymes.
- Étant donné que la classe anonyme est une sous-classe, mais qu'il n'y a pas de nom de classe, lorsque vous créez un objet avec la classe anonyme, vous devez utiliser directement la méthode de construction de la classe parente.
(2) Le rôle des classes anonymes Si les
utilisateurs veulent passer des paramètres de sous-classe à la méthode, ils peuvent créer des objets de classe anonymes directement dans la liste de paramètres de la méthode.
(3) Classes anonymes liées aux interfaces
Java permet également de créer un objet anonyme directement avec le nom de l'interface et un corps de classe. Ce corps de classe est considéré comme le corps de classe qui implémente l'interface sans la déclaration de classe. Le corps de la classe doit remplacer toutes les méthodes de l'interface. comme suit:
new 接口名() {
实现接口的匿名类的类体
};
Trois, classe anormale
Java utilise des throw关键字
objets qui lèvent une sous-classe Exception pour indiquer qu'une exception s'est produite.
(1) Instruction Try-catch
Java utilise l' instruction try-catch pour gérer les exceptions et place les éventuelles opérations anormales dans la partie try de l'instruction try-catch. Une fois, try lève un objet d'exception ou appelle une méthode qui peut lever un objet d'exception ( Et la méthode lève un objet d'exception), la partie try arrêtera immédiatement l'exécution (hors du bloc try) , puis exécutera la partie catch. Une tentative de capture peut être constituée de plusieurs captures.
try {
可能发生异常的语句
}
catch(ExceptionSubClass1 e) {
...
}
catch(ExceptionSubClass2 e) {
...
}
(2) Classe d'exception personnalisée
Lors de l'écriture d'un programme, vous pouvez étendre la classe Exception (classe d'exception système) pour définir votre propre classe d'exception , puis spécifier les méthodes pour générer ces exceptions en fonction des besoins du programme. Lorsqu'une méthode est déclarée, vous pouvez utiliser throws关键字
plusieurs exceptions à générer par la déclaration (la déclaration de méthode lève le nom de classe d'exception personnalisé) et spécifier l'opération qui génère l'exception dans le corps de méthode de la méthode, c'est-à-dire créer un objet avec la classe d'exception correspondante. Et utilisez le mot-clé throw pour lancer l'objet d'exception, provoquant l'arrêt de l'exécution de la méthode. Le programme doit appeler la méthode de l'exception possible dans le bloc d'instructions try-catch, où le rôle du catch est de capturer l'objet d'exception levé par le mot clé throw.
throw:用在方法体中表示抛出异常
throws:用在自定义异常方法声明时表示这个方法会抛出异常。
Quatre, assertion
Les instructions d'assertion sont très efficaces dans la phase de débogage du code et sont généralement utilisées pour les erreurs que le programme n'est pas prêt à gérer en interceptant des exceptions.
(1) Format de la syntaxe
Utilisez le mot-clé assert pour déclarer une instruction d'assertion. Il existe deux formats:
assert 返回值为boolean类型的表达式;
Si l'expression renvoie true, le programme continue de s'exécuter, sinon le programme s'arrête immédiatement.
assert 返回值为boolean类型的表达式:执行表达式;
Si l'expression de type booléen renvoie true, le programme continue de s'exécuter. Si la valeur de retour est false, le programme arrête l'exécution à partir de l'assertion et renvoie la valeur de l'expression d'exécution.
(2) Activer et désactiver les instructions d'assertion
Lorsque vous utilisez l'interpréteur Java pour exécuter l'application directement, l'instruction d'assertion est désactivée par défaut. Lors du débogage du programme, vous pouvez utiliser -ea pour activer l'instruction d'assertion:java -ea mainClass