Maison  >  Article  >  Java  >  Bases orientées objet Java et résumé des connaissances avancées

Bases orientées objet Java et résumé des connaissances avancées

PHP中文网
PHP中文网original
2017-06-22 13:52:471214parcourir

Contrôle de l'accès aux membres d'une classe.

privé : ne peut être utilisé que dans votre propre classe

public : peut être utilisé n'importe où

protected : package-private peut être utilisé sous le même package, et peut également être utilisé dans des sous-classes qui en héritent sous d'autres packages.

no-modifier : package-private ne peut être utilisé que sous le même package (le même que protected pour le même package). Cela ne fonctionne pas dans d'autres packages.


Remplacement et surcharge Remplacement

Remplacement : est utilisé pour les sous-classes Entre celui-ci et le classe parent, à l'exception du changement dans le corps de la fonction, tout le reste reste inchangé. Et le contrôleur d'accès de la sous-classe prioritaire ne peut pas être supérieur à la classe parent.

Surcharge : se situe entre des méthodes du même type. La liste des paramètres doit changer et le type de retour peut changer ou non.


Polymorphisme Le polymorphisme

peut généralement être compris comme

ParentClass obj = new ChindClass(); //A

ChildClass obj2 = new ChildClass(); >ChildClass obj3 = new ParentClass(); //Exemple d'erreur C

Laissez-moi vous expliquer pourquoi il existe ce paramètre. Pour A, nous déclarons ParentClass, cela équivaut alors à ouvrir des salles séparées en mémoire pour les variables et les méthodes de ParentClass. Lorsque nous en créons de nouvelles, c'est comme si quelqu'un venait réellement à ChildClass, car les variables et les méthodes de ChildClass doivent être numérotées. supérieur ou égal au nombre dans ParentClass, donc les chambres que nous avons ouvertes auparavant sont toutes pleines, donc l'hôtel est très heureux et reste autant que nous l'avons réservé. Pour C, nous avons réservé une chambre en utilisant les variables et méthodes de ChildClass, mais le nombre réel de personnes venant de ParentClass, et le nombre est évidemment inférieur au nombre de personnes de ChildParent. Si la réservation n'est pas satisfaisante, l'hôtel. sera très en colère et vous signalera une erreur.

Le remplacement et la surcharge sont des formes importantes de polymorphisme.


Classe abstraite La classe abstraite

la classe abstraite peut contenir ou non des fonctions abstraites, les fonctions abstraites doivent être qualifiées avec le mot clé abstract.

Tant qu'une classe contient une fonction abstraite, la classe doit être modifiée avec le mot-clé abstract. Idem dans ses sous-classes.


Interface Interface

L'interface est quelque chose de plus extrême qu'une classe abstraite. Toutes les méthodes qu'il contient doivent être des méthodes abstraites et ne peuvent pas contenir de champs d'instance. Toutes les constantes telles que int doivent être statiques et finales.

implémenter Cela doit être la même chose que abstract pour implémenter toutes les méthodes abstraites.


Connaissances avancées Java

Classe générique

Très facile à pass L'exemple suivant est évident. Par exemple, arraylist ou hashmap sont tous génériques

. Sérialiser la chaîne SérialisationLa sérialisation est simplement une technologie ou un processus de conversion d'objets instanciés existants en tableaux d'octets. Il présente de nombreux avantages, n’hésitez pas à y jeter un œil.

http://stackoverflow.com/questions/2232759/what-is-the-Purpose-of-serialization-in-java

package Generic;

//generic class
public class GenericMethodTest< A,Z > {
	//generic variable
	public A a;
	
	public void setA( A a) {
		this.a = a;
	}
	
	//generic methods
	public A getA () {
		return this.a;
	}
	public void printArray ( Z[] inArray) {
		for ( Z temp : inArray) {
			System.out.println(temp);
		}
	}
	
	public static < B > void printArray_2 (B[] inArray) {
		for (B temp : inArray) {
			System.out.println(temp);
		}
	}

}


Une sérialisation simple peut être apprise sur la base du code suivant.
package Implement;

import Generic.GenericMethodTest;

public class a{
	
	public static void main (String[] args) {
		GenericMethodTest<Integer,String> gm = new GenericMethodTest<Integer,String>() ;
		gm.setA(10);
		String[] ss = {"aaa", "bbb", "ccc"};
		Double [] bb = {1.0, 2.0, 3.0};
		gm.printArray(ss);
		gm.printArray_2(ss);
		gm.printArray_2(bb);
	}
	
}


Remarque : Pour certaines zones que nous ne souhaitons pas sérialiser, nous pouvons utiliser le mot-clé

transient

pour les modifier.


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