Maison  >  Article  >  Java  >  Tutoriel d'introduction au système JAVA (7) Orienté objet (encapsulation 2)

Tutoriel d'introduction au système JAVA (7) Orienté objet (encapsulation 2)

php是最好的语言
php是最好的语言original
2018-08-10 10:56:321587parcourir

###Orienté objet (encapsulation 2)###

1. Classes internes en Java

1) Qu'est-ce que c'est. Qu'en est-il des classes internes : une classe interne (Inner Class) est une classe définie dans une autre classe. De manière correspondante, une classe contenant une classe interne est appelée classe externe.

2) Pourquoi définir une classe à l'intérieur d'une autre classe ?

Les principales fonctions des classes internes sont les suivantes :

1> classe interne au sein de la classe externe, et n'autorisez pas les autres classes du même package à accéder à la classe

    2> Les méthodes de la classe interne peuvent accéder directement à toutes les données de la classe externe, y compris les données privées

3> Les fonctions implémentées par les classes internes peuvent également être implémentées à l'aide de classes externes, mais il est parfois plus pratique d'utiliser des classes internes

3) Combien de types de classes internes existe-t-il : classes internes membres , classes internes statiques, méthodes Classes internes, classes internes anonymes

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

2 Classes internes membres en Java

Les classes internes les plus courantes sont les classes internes membres. , également connue sous le nom de classe interne ordinaire. Regardons le code suivant :

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

À partir du code ci-dessus, nous pouvons voir comment utiliser les classes internes des membres :

1 La classe Inner est définie dans. L'intérieur de la classe Outer est équivalent à l'emplacement d'une variable membre de la classe Outer. La classe Inner peut utiliser n'importe quel caractère de contrôle d'accès, tel que public, protégé, privé, etc.

2 Le test. () définie dans la classe Inner peut accéder directement aux données de la classe Outer sans être affectée par le caractère de contrôle d'accès, comme accéder directement aux propriétés privées de la classe Outer a

3. classe interne, vous devez utiliser l'objet de classe externe pour créer l'objet de classe interne et ne pouvez pas créer directement un objet de classe interne, c'est-à-dire : nom de l'objet de classe interne = objet de classe externe.nouvelle classe interne ();

4. Après avoir compilé le programme ci-dessus, vous constaterez que deux fichiers .class

Parmi eux, le second est le fichier .class de la classe externe, et le premier est le fichier .class de la classe interne, c'est-à-dire que le fichier .class de la classe interne du membre est toujours comme ceci : nom de classe externe $ nom de classe interne.class

De plus, des rappels amicaux :

1. utiliser les membres et les méthodes des classes internes

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

Vous pouvez d'abord créer un objet de la classe interne, puis accéder à ses variables et méthodes membres via l'objet de la classe interne.

2. Si la classe externe et la classe interne ont les mêmes variables ou méthodes membres, la classe interne accédera par défaut à ses propres variables ou méthodes membres si vous souhaitez accéder aux variables membres de la classe externe. , vous pouvez utiliser le mot-clé this. Par exemple :

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

Exemple : La classe interne membre Inner est définie dans l'éditeur et les valeurs d'attribut de la classe externe et de la classe interne sont affichées dans le show méthode de la classe interne.

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

3. Classes internes statiques en Java

Les classes internes statiques sont des classes internes modifiées de manière statique. Les caractéristiques de cette classe interne sont :

<.> 1) Les classes internes statiques ne peuvent pas accéder directement aux membres non statiques de la classe externe, mais peuvent y accéder via new external class().members

2) Si les membres statiques de la classe externe sont différents de les membres de la classe interne Si les noms sont les mêmes, vous pouvez accéder aux membres statiques de la classe externe via « nom de classe.membre statique » si les membres statiques de la classe externe et les noms des membres de la classe interne ne le sont pas ; de même, vous pouvez appeler directement les membres statiques de la classe externe via "nom du membre"

3) Lors de la création d'un objet d'une classe interne statique, vous n'avez pas besoin d'un objet d'une classe externe. créez-le directement

Nom de l'objet de classe interne = new inner class();

Exemple :

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

4.


La classe interne de la méthode signifie que la classe interne est définie dans la méthode de la classe externe et que la classe interne de la méthode est uniquement dans La méthode est visible en interne, c'est-à-dire qu'elle ne peut être utilisée que dans cette méthode.


Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

PS : Puisque la classe interne de la méthode ne peut pas être utilisée en dehors de la méthode de la classe externe, la classe interne de la méthode ne peut pas utiliser de caractères de contrôle d'accès et de caractères statiques. symbole de modifications.

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

5. Méthode aléatoire du cours de mathématiques


Exemple : jeu de devinettes

 Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

6. Instructions de documentation

package example.make_api;

/**
 * 当前这个ArrayTool这个类是针对数组操作的工具类,里面提供了遍历数组以及获取数组的最大值和
 * 查找数组中第一次出现的索引这些功能
 * @author 梦竹
 * @version V1.0
 */
public class ArrayTool {
	/**
	 * 无参构造私有化的目的,是为了不让外界创建对象
	 */
	private ArrayTool() {
		
	}
	/**
	 * 当前这个方法是针对数组遍历的功能
	 * @param arr  是需要被遍历的数组
	 */
	public static void printArray(int[] arr) {
		System.out.print("[");
		for(int x = 0 ; x < arr.length ;x ++) {
			//判断
			if(x==arr.length-1) {
				System.out.println(arr[x]+"]");
			}else {
				System.out.print(arr[x]+", ");
			}
		}
	}
	/**
	 * 当前getMax方法是获取数组中最大值的方法
	 * @param arr  需要遍历的数组
	 * @return     返回到就是数组中的最大值
	 */
	public static int getMax(int[] arr) {
		//定义一个参照物,假设为最大值
		int max = arr[0] ;
		//遍历其他元素
		for(int x = 1; x < arr.length ;x ++) {
			//判断
			if(arr[x] > max) {
				max = arr[x] ;
			}
		}
		return max ;
	}
	/**
	 * 当前这个方法是查找数组的某个元素在数组中第一次出现的索引
	 * @param arr  
	 * @param value
	 * @return
	 */
	public static int getIndex(int[] arr,int value) {
		//假设找不到
		int index = -1 ;
		//遍历数组
		for(int x = 0 ; x < arr.length ; x ++) {
			//判断
			if(arr[x] == value) {
				//将当前x索引赋值给index
				index = x ;
				break ;
			}
		}
		return index ;
	}
}
package example.make_api;
/**
 * 需求:自定义一个数组,遍历数组
 * 制作文档说明书:
 * 		可以定义一个ArrayTool,数组操作的工具类
 * 		在工具类,必须文档注释,来让解析成文档
 * 		在数组工具类ArrayTool,提供遍历功能,获取最大值的,查找数组中某个元素第一次出现的索引
 * 
 * 
 * @author Administrator
 *
 */
public class ArrayDemo {

	public static void main(String[] args) {
		
		//定义数组,静态初始化
		int[] arr = {57,69,13,24,80} ;
		
		//测试
		//遍历功能
		ArrayTool.printArray(arr);
		//最大值
		int max = ArrayTool.getMax(arr) ;
		System.out.println("最大值是:"+max);
		//求元素在数组中第一次参出现的索引
		int index = ArrayTool.getIndex(arr, 13) ;
		System.out.println("索引是:"+index);
	}	

}

À ce stade, deux fichiers de classe sont trouvés

Supprimer l'exemple de package dans Tool .make_api

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

Win+R call dos

Tutoriel dintroduction au système JAVA (7) Orienté objet (encapsulation 2)

####END####

Articles associés :

Tutoriel du système de saisie JAVA (5) Syntaxe de base (3)

Tutoriel du système de saisie JAVA (6) Orienté objet (encapsulation)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn