编程知识 cdmana.com

Classe orientée objet Java, objet, méthode de construction, encapsulation

No1Chapitre Base orientée objet

1.1 Aperçu des idées de programmation

1.1.1 Aperçu de la pensée axée sur le processus

Réfléchissons un peu.,Ces jours - ci, nous accomplissons une étape nécessaire:D'abord, il faut savoir ce qu'on va faire.,Et il analyse ce qu'il faut faire,Enfin, nous allons coder.Pas à pas,Et chaque étape concrète exige que nous réalisions et opérions.Ces étapes s'appellent et collaborent entre elles,Répondre à nos besoins.

Nous participons à chacune des étapes ci - dessus.,Et doit faire face à chaque étape et processus,C'est l'expression la plus directe de l'orientation vers le processus..

Qu'est - ce que le développement axé sur les processus?? Développement axé sur les processus,Est en fait orienté vers chaque étape et processus,Terminer chaque étape et chaque processus,Ces méthodes fonctionnelles s'appellent ensuite les unes les autres,Répondre aux besoins.

Langage de représentation axé sur les processus:CLangues

1.1.2 Aperçu de la pensée orientée objet

Lorsque la demande est unique,Ou simplement,Pas à pas, pas à pas.,Et très efficace..Peut être modifié en fonction des besoins,Augmentation de la fonction,J'ai du mal à trouver chaque étape à franchir.,C'est là que j'ai commencé à réfléchir.,Pouvez - vous encapsuler ces étapes et fonctions,Selon les différentes fonctions lors de l'emballage,Faire des paquets différents,Fonctionnalité similaire encapsulée ensemble.Pour que la structure soit plus claire.Quand il est utilisé,Trouvez la classe correspondante..C'est l'idée orientée objet.

1.2 Caractéristiques et exemples de la pensée orientée objet

1.2.1 Caractéristiques de la pensée orientée objet

​ La Programmation orientée objet est basée sur une idée de Programmation orientée processus;

​ Orienté vers le processus: L'accent est mis sur les étapes de chaque fonction ;

​ Orienté objet:L'accent est mis sur l'objet, Puis l'objet appelle la fonction ;

A: Est une pensée plus conforme à notre habitude de penser

B:Peut simplifier des choses complexes

C:Qui nous a fait passer de l'exécutif au commandant

Le rôle a changé

1.2.2 Exemples d'idées orientées objet

Acheter un ordinateur:

​ Orienté vers le processus: Je vais acheter un ordinateur – Je veux savoir ce que ça veut dire d'acheter un ordinateur. – Rechercher les paramètres correspondants sur Internet – Acheter un ordinateur à Computer City –Marchandage– Acheter un ordinateur

​ Orienté objet: Je vais acheter un ordinateur – Laissez les achats m'acheter un ordinateur – Acheter un ordinateur

Lave - linge.:

​ Orienté vers le processus: Enlève tes vêtements –Trouver un bassin– Mets un peu de détergent –Ajouter un peu d'eau–Trempage10Minutes– Frottez - vous – Laver les vêtements –Séchage– Laisse tomber

​ Orienté objet: Enlève tes vêtements – Jetez - le à la machine à laver automatique – Laisse tomber

1.3 Relation entre la classe et l'objet

Nous apprenons le langage de programmation, C'est pour simuler ce qui se passe dans le monde réel ,Réaliser l'informatisation.Par exemple,: Système de facturation pour les achats au supermarché , Système bancaire .

Comment représenter une chose du monde réel ?

A:Propriétés Est la description de la chose

B:Comportement C'est ce que la chose peut faire

On a apprisJava L'Unit é de base de la langue est la classe ,Alors..., On devrait mettre les choses dans une seule classe .

Catégorie:Est une collection d'attributs et de comportements connexes

Objet:Est l'incarnation concrète de ce genre de choses

Exemples:

Catégorie Étudiants

Objet Le moniteur est un objet

No2Chapitre Classes et objets

2.1 Définition de la classe

2.1.1 Les choses du monde réel

Les classes sont utilisées pour décrire les choses dans le monde réel .

Les choses:

Propriétés Description de la chose

Comportement Ce que les choses peuvent faire

2.1.2 JavaUtilisation moyenneclassIl en va de même pour la description des choses

Variable membre Est l'attribut des choses

Méthode d'adhésion C'est le comportement des choses

2.1.3 Définir une classe est en fait un membre qui définit une classe(Variables des membres et méthodes des membres)

1:Variable membre Comme les variables précédemment définies.

Mais la position a changé:Dans la classe,Hors méthode.

Valeur d'initialisation: Aucune valeur d'initialisation n'est requise .

2:Méthode d'adhésion C'est la même méthode de définition que précédemment.

C'est justestaticEnlevez, Plus de détails staticLe rôle de.

2.2 Cas de classes et d'objets

2.2.1 Classe d'étudiants

2.2.1.1 Comment définir

Analyse étape par étape selon le processus de la matière à la classe

2.2.1.2 CAS

/* * Classe d'étudiants: * Variable membre:Nom,Âge * Méthode d'adhésion:Apprendre,Manger */
public class Student {
    
	//Variable membre
	
	/** * @Fields name : Nom */  
	String name;
	
	/** * @Fields age : Âge */  
	int age;
	
	//Méthode d'adhésion
	/** * @Title: study * @Description: Méthodes d'apprentissage */
	public void study(){
    
		System.out.println("Bien étudier.,Jour après jour!");
	}
	
	/** * @Title: eat * @Description: Comment manger */
	public void eat(){
    
		System.out.println("Apprendre à avoir faim,Il faut manger..");
	}
}

2.2.1.3 Comment utiliser

Utiliser une classe, En fait, les membres qui utilisent cette classe .(Variables des membres et méthodes des membres)

Et nous voulons utiliser les membres d'une classe , Vous devez d'abord avoir un objet de cette classe .

1. Comment pouvons - nous avoir un objet de classe ?

​ Créer un objet suffit .

2. Comment créer un objet ?

​ Créer le format de l'objet: Nom de la classe Nom de l'objet = new Méthode de construction();

3. Comment les objets accèdent - ils aux membres? ?

Variable membre:Nom de l'objet.Variable membre

Méthode d'adhésion:Nom de l'objet.Méthode d'adhésion()

2.2.1.4 CAS

public class StudentDemo {
    
	public static void main(String[] args) {
    
		//Format:Nom de la classe Nom de l'objet=new Nom de la classe();
		Student s=new Student();
		System.out.println("s:"+s);//s:com.igeek_02.Student@feb48
		
		// Valeur de la variable membre de sortie directe 
		System.out.println("Nom:"+s.name);//null
		System.out.println("Âge:"+s.age);//0
		System.out.println("---------------");
		
		//Assigner une valeur à la variable membre
        s.name="Wu - kyung";
		s.age=35;
		
		// Renvoie la valeur de la variable membre 
		System.out.println("Nom:"+s.name);//Wu - kyung
		System.out.println("Âge:"+s.age);//35
		System.out.println("---------------");
		
		//Appeler la méthode membre
		s.study();
		s.eat();
	}
}

2.2.2 Exercices de téléphonie mobile

2.2.2.1 CAS

/** * @ClassName: Phone * @Description: Mobile * Company www.igeekhome.com * * Mobile: * Variable membre:Marque (s)、Prix、Couleur... * Méthode d'adhésion:Appelle、Envoyer un SMS... */
public class Phone {
    
	/** * @Fields brand : Marque (s) */  
	String brand;
	/** * @Fields price : Prix */  
	int price;
	/** * @Fields color : Couleur */  
	String color;
	
	/** * @Title: call * @Description: Appelle * @param name */
	public void call(String name){
    
		System.out.println("Voilà."+name+"Appelle");
	}
	
	/** * @Title: sendMessage * @Description: Envoyer un SMS */
	public void sendMessage(){
    
		System.out.println("Messages de masse");
	}
}

2.2.2.2 CAS

Utilisation de la classe mobile

/** * @ClassName: PhoneDemo * @Description:  Classe de test pour la classe mobile  * @date 2017Année11Mois10Jour Après - midi4:19:28 * Company www.igeekhome.com * */
public class PhoneDemo {
    
	public static void main(String[] args) {
    
		//Créer un objet
		Phone p=new Phone();
		
		// Variable membre de sortie 
		System.out.println("Marque (s):"+p.brand);//null
		System.out.println("Prix:"+p.price);//0
		System.out.println("Couleur:"+p.color);//null
		System.out.println("-------------------");
		
		//Assigner une valeur à la variable membre
		p.brand="HuaweiMate10";
		p.price=3999;
		p.color="Noir";
		
		// Exporter à nouveau les variables des membres 
		System.out.println("Marque (s):"+p.brand);//HuaweiMate10
		System.out.println("Prix:"+p.price);//3999
		System.out.println("Couleur:"+p.color);//Noir
		System.out.println("-------------------");
		
		//Appeler la méthode membre
		p.call("Wu - kyung");
		p.sendMessage();
	}
}

2.3 Carte mémoire de l'objet

2.3.1 La situation d'un objet

2.3.1.1 CAS

/** * @ClassName: Phone * @Description: Mobile * Company www.igeekhome.com * * Mobile: * Variable membre:Marque (s)、Prix、Couleur... * Méthode d'adhésion:Appelle、Envoyer un SMS... */
public class Phone {
    
	/** * @Fields brand : Marque (s) */  
    String brand;
	/** * @Fields price : Prix */  
	int price;
	/** * @Fields color : Couleur */  
	String color;
	
	/** * @Title: call * @Description: Appelle * @param name */
	public void call(String name){
    
		System.out.println("Voilà."+name+"Appelle");
	}
	
	/** * @Title: sendMessage * @Description: Envoyer un SMS */
	public void sendMessage(){
    
		System.out.println("Messages de masse");
	}
}
/** * @ClassName: PhoneDemo * @Description:  Classe de test pour la classe mobile  * Company www.igeekhome.com * */
public class PhoneDemo {
    
	public static void main(String[] args) {
    
		//Créer un objet
		Phone p=new Phone();
		
		// Variable membre de sortie 
		System.out.println(p.brand+"---"+p.price+"---"+p.color);
        //Assigner une valeur à la variable membre
		p.brand="Marteau";
		p.price=2999;
		p.color="Brun";
		
		// Exporter à nouveau les variables des membres 
		System.out.println(p.brand+"---"+p.price+"---"+p.color);
		
		//Appeler la méthode membre
		p.call("Lin qingxia");
		p.sendMessage();
	}
}

2.3.1.2 1 Carte mémoire des objets - Le processus d'initialisation de base d'un objet

Insérer la description de l'image ici

2.3.2 Deux cas d'objet un

2.3.2.1 CAS

public class PhoneDemo2 {
    
	public static void main(String[] args) {
    
		// Créer un objet
		Phone p = new Phone();

		// Assigner une valeur à la variable membre
		p.brand = "Millet5s";
		p.price = 1999;
		p.color = "Argent";

		//  Variable membre de sortie 
		System.out.println(p.brand + "---" + p.price + "---" + p.color);

		// Appeler la méthode membre
		p.call("Lin qingxia");
		p.sendMessage();

		// Créer un objet
		Phone p2 = new Phone();

		// Assigner une valeur à la variable membre
		p2.brand = "IPhone7S";
		p2.price = 7999;
		p2.color = "Touhoujin";

		//  Variable membre de sortie 
		System.out.println(p2.brand + "---" + p2.price + "---" + p2.color);

		// Appeler la méthode membre
		p2.call("Zhang manyu");
		p2.sendMessage();
	}
}

2.3.2.2 2 Carte mémoire des objets - Partage des méthodes

Insérer la description de l'image ici

2.3.3 Le cas 2 des deux objets

2.3.3.1 CAS

public class PhoneDemo3 {
    
	public static void main(String[] args) {
    
		// Créer un objet
		Phone p = new Phone();

		// Assigner une valeur à la variable membre
		p.brand = "OPPO";
		p.price = 2999;
		p.color = "Blanc";

		//  Variable membre de sortie 
		System.out.println(p.brand + "---" + p.price + "---" + p.color);
        // Prends ça.pObjet assigné àp2
		Phone p2 = p;

		// Assigner une valeur à la variable membre
		p2.brand = "Meizu";
		p2.price = 1999;
		p2.color = "Bleu";

		//  Exporter à nouveau les variables des membres 
		System.out.println(p.brand + "---" + p.price + "---" + p.color);
		System.out.println(p2.brand + "---" + p2.price + "---" + p2.color);

	}
}

2.3.3.2 2 Carte mémoire des objets - Deux références pointent vers le même objet

Insérer la description de l'image ici

2.4 La différence entre les variables des membres et les variables locales

2.4.1 Position différente dans la classe

Variable membre: Méthode hors classe

Variables locales: Dans la méthode ou sur la Déclaration de méthode(Paramètres de forme)

2.4.2 Différents emplacements en mémoire

Variable membre: Mémoire en tas

Variables locales: Mémoire de pile

2.4.3 Le cycle de vie est différent

Variable membre: Avec l'existence de l'objet,Disparaître à mesure que l'objet disparaît

Variables locales: Existe lorsque la méthode est appelée,Disparaît lorsque la méthode est appelée

2.4.4 Différentes valeurs d'initialisation

Variable membre: A une valeur d'initialisation par défaut

Variables locales: Aucune valeur d'initialisation par défaut,Il faut d'abord définir,Affectation,Pour utiliser.

2.4.5 CAS

public class Variable {
    
	/** * @Fields x : Variable membrex */  
	int x;
	
	/** * @Title: show * @Description: Afficher les variables */
	public void show(){
    
		//Variables locales
		int y=0;
		
		System.out.println(x);
		System.out.println(y);
	}
}

2.5 Le nom de la classe comme paramètre formel et valeur de retour

2.5.1 Nom de la classe comme cas de paramètre formel

Ce que vous voulez, c'est un objet de cette classe.

2.5.1.1 CAS

public class Student {
    
	/** * @Title: study * @Description: Méthodes d'apprentissage */
	public void study(){
    
		System.out.println("Bien étudier.,Jour après jour");
	}
}

public class Teacher {
    
	/** * @Title: test * @Description:  Tester les méthodes d'apprentissage des élèves  * @param s */
	public void test(Student s){
    
		s.study();
	}
}

//Catégorie d'essai
public class Test {
    
	public static void main(String[] args) {
    
		Teacher t=new Teacher();
		Student s=new Student();
		t.test(s);
	}
}

2.5.2 Nom de la classe comme cas de valeur de retour

Renvoie en fait un objet de cette classe

2.5.2.1 CAS

public class Student {
    
	/** * @Title: study * @Description: Méthodes d'apprentissage */
	public void study(){
    
		System.out.println("Bien étudier.,Jour après jour");
	}
}

public class Teacher {
    
	/** * @Title: getStudent * @Description: Obtenir des objets étudiants * @return */
	public Student getStudent(){
    
		Student s=new Student();
		return s;
	}
}

//AdoptionTeacherObjet obtenuStudentObjet,Puis appelezStudentMéthode de l'objet
// Si la valeur de retour de la méthode est le nom de la classe :En fait, ce sont les objets de cette classe qui sont retournés
public class Test {
    
	public static void main(String[] args) {
    
		Teacher t=new Teacher();
		Student s=t.getStudent();
		s.study();
	}
}

No3Chapitre Paquets et droits d'accès

3.1 Aperçu du paquet et définition du format

3.1.1 Le concept de package

La gestion de la Sous - traitance est un moyen fondamental d'organiser la structure du projet logiciel . Nous mettons des fonctionnalités similaires dans un paquet ,Gestion facile. Et la Division du travail des projets quotidiens est également limitée par le paquet .

Le paquet dans le système de fichiers est DossiersExiste sous la forme. Les paquets définis dans la classe doivent correspondre à la réalité class Le dossier dans lequel se trouve le fichier est uniforme , C'est - à - dire après la définition du paquet , Si la classe est aSous le sac.,Produit par.classLe fichier doit êtreaSous le dossier, Sinon, la classe ne peut pas être trouvée .

3.1.2 Format de définition du paquet

Utilisez le nom de domaine de l'entreprise pour écrire à l'envers ,Paquet Multi - niveauxToutes les minuscules,Avec”.”Connexion

​ Par exemple:: Le site Web du camp geek est igeekhome.com Alors le nom de domaine est écrit à l'envers comme com.igeekhome

Oracle Corporationoracle.com Alors le nom de domaine est écrit à l'envers comme com.oracle

Format de définition dans la classe : package Nom du paquet;

 Recommandations générales structure du Répertoire de niveau 4 :
    - com org gov  Selon la nature du projet actuel 
    - igeek  Nom du développeur , Ou le nom de la partie a 
    - javase bank Nom du projet
    - entity dao service controller Nom du calque

Temps de compilation:Compilation directejavaLes fichiers sont OK.

Exécution: Parce que le nom complet de la classe contient le nom du paquet , Donc vous devez exécuter le nom complet de la classe qui a ajouté le nom du paquet

Nom complet de la classe = Nom du paquet + Nom de la classe  Similaire à:com.igeek.javase.day01.Student

Résumé:

1.- Oui.java La façon dont le programme gère les ressources

2. Pour éviter un double nom de classe

3.1.3 CAS

package com.igeek_01;

/** * @ClassName: PackageDemo * @Description: Le rôle du sac * Company www.igeekhome.com * * Sac:- Oui.java La façon dont le programme gère les ressources  * *  Paquets déclarés dans la classe , Doit être comparé à ce qui devrait vraiment être .class Les fichiers sont dans le même dossier  * * Format de la Déclaration: * package Sac(Dossiers).Sac(Dossiers).Sac(Dossiers)... * */
public class PackageDemo {
    

}

3.2 Accès au nom complet de la classe

Lors de l'accès à la classe , Pour trouver cette classe ,Lors de l'utilisation d'une classe, Le nom complet de la classe contenant le nom du paquet doit être utilisé .

Par exemple::StringStringEn cas d'utilisation, Vous pouvez y accéder comme suit: :

java.lang.String s = “Une chaîne”;

Équivalent à String s = “Une chaîne”;

3.2.1 CAS

PersonCatégorie:

package com.igeek_02;

/** * @ClassName: Person * @Description: PersonCatégorie * Company www.igeekhome.com * */
public class Person {
    
	/** * @Fields name : Nom */  
	private String name;
	
	/** * @Title: Person * @param name */
	public Person(String name) {
    
		this.name=name;
	}

	/** * @return the name */
	public String getName() {
    
		return name;
	}

	/** * @param name the name to set */
	public void setName(String name) {
    
		this.name = name;
	}
}

Dans d'autres paquets PersonCatégorie:

package com.igeek_02.other;

/** * @ClassName: Person * @Description: PersonCatégorie * Company www.igeekhome.com * */
public class Person {
    
	/** * @Fields name : Nom */  
	private String name;
	
	/** * @Title: Person * @param name */
	public Person(String name) {
    
		this.name=name;
	}

	/** * @return the name */
	public String getName() {
    
		return name;
	}

	/** * @param name the name to set */
	public void setName(String name) {
    
		this.name = name;
	}
}

Classe nom complet créer une classe de test d'objet :

package com.igeek_02;

/** * @ClassName: PackageDemo * @Description: packageLe rôle du sac * Company www.igeekhome.com * * Sac:- Oui.java La façon dont le programme gère les ressources  * *  Paquets déclarés dans la classe , Doit être comparé à ce qui devrait vraiment être .class Les fichiers sont dans le même dossier  * * Format de la Déclaration: * package Dossiers(Sac).Dossiers(Sac).Dossiers(Sac)... * *  Comment utiliser d'autres classes avec des paquets : Le nom complet doit être ajouté ,Nom du paquet+Nom de la classe */

public class PackageDemo {
    
	public static void main(String[] args) {
    
		// Accédez en utilisant le nom complet de la classe JRE Fournir une bonne classe 
		java.lang.String s = "abc";
		System.out.println(s);
		
		// Utilisez le nom complet de la classe pour accéder à d'autres classes sous le même paquet 
		com.igeek_02.Person person=new com.igeek_02.Person("Jack");
		person.setName("Rose");
		System.out.println(person.getName());
		
		// Accéder à différents paquets en utilisant le nom complet de la classe ( Paquets croisés )Autres classes
		com.igeek_02.other.Person person2=new com.igeek_02.other.Person("Rose");
		System.out.println(person2.getName());
	}
}

3.3 Accès à la classe avec le paquet

3.3.1 Omettre le nom du paquet sous le même paquet

Lorsque la classe utilisée est dans le même dossier que la classe utilisée , Ou la classe utilisée est java.lang Lors de l'emballage , Nous pouvons généralement omettre les paquets de la classe , Type d'utilisation directe , Évitez d'utiliser le nom complet de la classe .

3.3.2 Diriger l'accès aux paquets à travers les paquets

Lorsque la classe utilisée n'est pas dans le même dossier que la classe utilisée , Nous pouvons utiliser ce type de , Évitez d'utiliser le nom complet de la classe .

Format du paquet pilote:

​ packageAprès,classAvant

​ Utiliserimport Nom du paquet.Nom du paquet.Nom de la classe;

Lorsque plusieurs dossiers ont le même nom de classe , Un seul paquet de guidage peut être utilisé , Les autres doivent encore écrire le nom complet .

​ Quand vous pensez à plusieurs classes dans un paquet d'importation , Vous pouvez utiliser toutes les classes représentant ce paquet .

3.3.3 CAS

Sous le même sac PersonCatégorie:

package com.igeek_03;

/** * @ClassName: Person * @Description: PersonCatégorie * Company www.igeekhome.com * */
public class Person {
    
	/** * @Fields name : Nom */  
	private String name;
	
	/** * @Title: Person * @param name */
	public Person(String name) {
    
		this.name=name;
	}

	/** * @return the name */
	public String getName() {
    
		return name;
	}

	/** * @param name the name to set */
	public void setName(String name) {
    
		this.name = name;
	}
}

com.igeek_03.other1EnveloppéPersonOtherCatégorie:

package com.igeek_03.other1;

/** * @ClassName: PersonOther * @Description: PersonOtherCatégorie * Company www.igeekhome.com * */
public class PersonOther {
    
	/** * @Fields name : Nom */  
	private String name;
	
	/** * @Title: Person * @param name */
	public PersonOther(String name) {
    
		this.name=name;
	}

	/** * @return the name */
	public String getName() {
    
		return name;
	}

	/** * @param name the name to set */
	public void setName(String name) {
    
		this.name = name;
    }
}

com.igeek_03.other2EnveloppéPersonOtherCatégorie:

package com.igeek_03.other2;

/** * @ClassName: PersonOther * @Description: PersonOtherCatégorie * Company www.igeekhome.com * */
public class PersonOther {
    
	/** * @Fields name : Nom */  
	private String name;
	
	/** * @Title: Person * @param name */
	public PersonOther(String name) {
    
		this.name=name;
	}

	/** * @return the name */
	public String getName() {
    
		return name;
	}

	/** * @param name the name to set */
	public void setName(String name) {
    
		this.name = name;
	}
}

Import test classes for each Class in Different packages :

package com.igeek_03;

// Déclaration du paquet pilote 
import com.igeek_03.other1.PersonOther;

// Impossible d'importer une classe avec le même nom ,Alors..., Lorsque plusieurs dossiers ont le même nom de classe , Un seul paquet de guidage peut être utilisé , Les autres doivent encore écrire le nom complet 
//import com.igeek_03.other2.PersonOther;

/** * @ClassName: PackageAccessDemo * @Description:  Comment accéder aux différentes classes sous différents paquets  * Company www.igeekhome.com * * JREFournijava.langClasse sous emballage, Vous pouvez utiliser le nom de la classe directement , Sans le nom du paquet ,Par exemple,String * *  Lors de l'accès au même paquet , Le nom complet peut être omis ,Utiliser le nom de la classe * *  Accès à travers les paquets : *  Peut ne pas utiliser le nom complet , Lorsque vous déclarez la classe à utiliser en utilisant la méthode du paquet Guide  * * Format du paquet pilote: * packageAprès,classAvant * Utiliserimport Nom du paquet.Nom du paquet.Nom de la classe; */

public class PackageAccessDemo {
    
	public static void main(String[] args) {
    
		
		//JREFournilangClasse sous emballage, Vous pouvez utiliser le nom de la classe directement , Sans le nom du paquet ,Par exemple,String
		String s = "hit the road";
		
		// Lors de l'accès au même paquet , Le nom complet peut être omis ,Utiliser le nom de la classe
		Person person = new Person("Jack");
		System.out.println(person.getName());
		
		// Accès à travers les paquets ,Paquet pilote requis,Réutiliser
		PersonOther Person2 = new PersonOther("Rose");
		System.out.println(Person2.getName());
		
		// Impossible d'importer une classe avec le même nom ,Alors..., Lorsque plusieurs dossiers ont le même nom de classe , Un seul paquet de guidage peut être utilisé , Les autres doivent encore écrire le nom complet 
		com.igeek_03.other2.PersonOther Person3 = new 
            com.igeek_03.other2.PersonOther("Rose");
		System.out.println(Person3.getName());
		
	}

}

3.4 Accès

3.4.1 Quatre modificateurs d'accès

InJavaQuatre types d'accès sont disponibles dans, Lors de l'utilisation de différents droits d'accès ,Le contenu modifié aura des droits d'accès différents, Le tableau suivant illustre l'accès aux différents droits :

public protected Vide(default) private
Dans la même catégorie
Dans le même sac(Sous - classes et classes indépendantes)
Sous - classes de différents paquets
Classes indépendantes dans différents paquets

​ En résumé:Dans le processus de développement quotidien,Classes écrites、Méthodes、 Accès aux variables des membres

l Pour n'avoir accès qu'à cette classe privateModification;

l Pour accéder à toutes les classes de ce paquet sans aucun modificateur ;

l Pour que les sous - classes de cette classe puissent être accessibles et utilisées protectedModification

l Pour que n'importe quelle classe dans n'importe quel paquet puisse accéder à l'utilisation publicModification.

l Attention!: Si la classe utilise publicModification, Le nom de la classe doit être le même que le nom du fichier .Il ne peut y avoir qu'un seul fichierpublicClasse modifiée.

3.4.2 Test d'accès aux droits dans le même paquet

3.4.2.1 CAS

AccessClassCatégorie

package com.igeek_04_02;

/** * @ClassName: AccessClass * @Description:  Tester la classe d'accès  * Company www.igeekhome.com * */
public class AccessClass {
    
	
	/** * @Title: method * @Description:  Méthodes de privatisation  */
	private void method() {
    
		System.out.println(" Méthodes de privatisation ");
	}
	
	/** * @Title: method2 * @Description:  Méthode de permission par défaut  */
	void method2() {
    
		System.out.println(" Méthode de permission par défaut ");
	}
	
	/** * @Title: method3 * @Description: Méthode protégée */
	protected void method3() {
    
		System.out.println("Méthode protégée");
	}
	
	/** * @Title: method4 * @Description: Approche commune */
	public void method4() {
    
		System.out.println("Approche commune");
	}
	
	/** * @Title: testAccess * @Description:  Méthode de test d'autorisation dans cette classe  */
	public void testAccess() {
    
		method();
		method2();
		method3();
		method4();
	}

	public static void main(String[] args) {
    
		
		AccessClass ac = new AccessClass();
		
		// Dans cette catégorie , Accès à toutes les méthodes 
		ac.method();
		ac.method2();
		ac.method3();
		ac.method4();
	}

}

AccessDemoCatégorie

package com.igeek_04_02;

/** * @ClassName: AccessDemo * @Description:  Classe de test pour l'accès  * Company www.igeekhome.com * */
public class AccessDemo {
    
	public static void main(String[] args) {
    
		
		AccessClass ac = new AccessClass();
        //Sous le même sac., Accès aux méthodes non privées d'autres classes 
		//ac.method();
		ac.method2();
		ac.method3();
		ac.method4();
	}
}

3.4.3 Accès à travers les paquets

3.4.3.1 CAS

AccessDemoCatégorie

package com.igeek_04_03;

import com.igeek_04_02.AccessClass;

/** * @ClassName: AccessDemo * @Description:  Classe de test pour l'accès  * Company www.igeekhome.com * */
public class AccessDemo {
    
	public static void main(String[] args) {
    
		
		AccessClass ac = new AccessClass();
		
		// Tester l'accès entre paquets , Accès aux méthodes publiques seulement 
		//ac.method();
		//ac.method2();
		//ac.method3();
		ac.method4();
	}

}

3.4.4 Accès entre les sous - classes parents de différents paquets

3.4.4.1 CAS

package com.igeek_04_04;

import com.igeek_04_02.AccessClass;

/** * @ClassName: AccessDemo * @Description:  Classe de test pour l'accès  * @date 2017Année11Mois15Jour Après - midi2:26:38 * Company www.igeekhome.com * * AccessDemo La classe hérite de la classe mère AccessClass */
public class AccessDemo extends AccessClass{
    
	
	public static void main(String[] args) {
    
		
		AccessClass ac = new AccessClass();
		
		// Tester l'accès entre paquets , Accès aux méthodes publiques seulement 
		//ac.method();
		//ac.method2();
		//ac.method3();
		ac.method4();
		
		AccessDemo ad=new AccessDemo();
		ad.method0();
	}
	
	/** * @Title: method0 * @Description:  Les sous - classes ont accès aux méthodes publiques et protégées de la classe mère , Même emballage ou non  */
	public void method0() {
    
		//super.method();
		//super.method2();
		super.method3();
		super.method4();
    }

}

No4Chapitre Encapsulation

4.1 Qu'est - ce qu'un paquet

4.1.1 Aperçu de l'emballage

Est l'une des trois caractéristiques de l'orientation objet

Est une simulation du monde objectif par un langage de programmation orienté objet,Dans le monde objectif, les variables membres sont cachées à l'intérieur de l'objet,L'extérieur ne peut pas fonctionner et modifier directement. Comme dans le chapitre précédent, l'âge .

4.1.2 Principe d'emballage

Cacher tout ce qui n'a pas besoin d'être fourni à l'extérieur.

Cacher les attributs,Fournir un accès public.

Variable membreprivate,Fournir une correspondancegetXxx()/setXxx()Méthodes

4.1.3 Les avantages

Contrôler le fonctionnement des variables membres par des méthodes,Amélioration de la sécurité du Code

Encapsuler le Code de la façon suivante,Amélioration de la réutilisabilité du Code, Conception modulaire du Code de mise en œuvre .

4.2 privateMots clés

4.2.1 privateMots clés

Est un modificateur de permission.

Peut modifier les membres(Variables des membres et méthodes des membres)

ParprivateLes membres modifiés ne sont accessibles que dans cette classe.

4.2.2 CAS

/** *  Accès direct aux variables des membres par objet , Il y aura des problèmes de sécurité des données  * À ce moment - là., Nous nous sommes demandé si nous pouvions empêcher les objets extérieurs d'accéder directement aux variables des membres ? * Oui.! * Comment y parvenir? * privateMots clés * * private: * Est un modificateur de permission. * Peut modifier les membres(Variables des membres et méthodes des membres) * Parprivate Les membres modifiés ne sont accessibles que dans cette classe . * * PourprivateVariable membre modifiée, Nous fournirons en conséquence getXxx()EtsetXxx() Valeurs utilisées pour obtenir et définir les variables des membres ,Méthodes publicModification */
public class Student {
    
	/** * @Fields name : Nom */  
	String name;
	/** * @Fields age : Âge */  
	//int age;
	private int age;	

	/** * @Title: setAge * @Description: Fixer l'âge * @param a */
	public void setAge(int a){
    
		if(a<0||a>200){
    
			System.out.println("Vous avez donné un mauvais âge");
		}else{
    
			age=a;
		}
	}
	
	/** * @Title: getAge * @Description: Obtenir l'âge * @return */
    public int getAge(){
    
		return age;
	}
	
	/** * @Title: show * @Description: Afficher les informations de l'étudiant */
	public void show(){
    
		System.out.println("Nom::"+name+",L'âge est:"+age);
	}
}

//Catégorie d'essai
public class StudentDemo {
    
	public static void main(String[] args) {
    
		//Créer un objet étudiant
		Student s=new Student();
		s.show();
		
		s.name="Lin qingxia";
		//s.age=28;
		//s.age=-28;
		//s.setAge(-28);
		s.setAge(28);
		s.show();
	}
}

4.2.3 privateLes applications les plus courantes

Utiliser les variables des membresprivateModification

Fournir une correspondancegetXxx()/setXxx()Méthodes

Utilisation d'un cas standard

4.2.4 CAS

public class Student {
    
	/** * @Fields name : Nom */  
	private String name;
	/** * @Fields age : Âge */  
	private int age;
	
	/** * @Title: setName * @Description: Définir le nom * @param n */
	public void setName(String n){
    
		name=n;
	}
	
	/** * @Title: getName * @Description: Obtenir le nom * @return */
	public String getName(){
    
		return name;
	}
	
	/** * @Title: setAge * @Description: Fixer l'âge * @param a */
	public void setAge(int a){
    
		age=a;
	}
	
	/** * @Title: getAge * @Description: Obtenir l'âge * @return */
	public int getAge(){
    
		return age;
	}
	
}
//Catégorie d'essai
public class StudentDemo {
    
	public static void main(String[] args) {
    
		//Créer un objet étudiant
		Student s=new Student();
		System.out.println(s.getName()+"---"+s.getAge());
		
		s.setName("Wu - kyung");
		s.setAge(35);
		System.out.println(s.getName()+"---"+s.getAge());
	}
}

4.3 thisMots clés

this: Référence de l'objet représentant la classe

N'oublie pas: La méthode est appelée par quel objet,thisÇa représente l'objet

Quand utiliserthisEt alors?? Variables locales masquer les variables membres

package com.igeek_02;

/** * @ClassName: Student * @Description: Classe d'étudiants * Company www.igeekhome.com * *  Nous exigeons la connaissance du nom . *  Et ce que nous avons maintenant dans notre code nEta Je n'ai pas fait ce qu'il fallait. , Donc nous devons améliorer . * *  Si le nom de la variable locale est le même que le nom de la variable membre , En cas d'utilisation topique ,Le principe de proximité est adopté. * *  Y a - t - il un moyen de mettre les variables locales name Assigné à la variable membre nameEt alors??Oui. * *  Quelle méthode ? * AvecthisLes mots - clés peuvent résoudre ce problème. * * this: Référence de l'objet représentant la classe * La méthode est appelée par quel objet,thisÇa représente l'objet * * Utiliser le scénario:Variables locales masquer les variables membres */
public class Student {
    
	/** * @Fields name : Nom */  
	private String name;
	/** * @Fields age : Âge */  
	private int age;
	
	/** * @Title: setName * @Description: Définir le nom * @param n */
	public void setName(String name){
    //Wu - kyung
		//name=name;
		this.name=name;
	}
	
	/** * @Title: getName * @Description: Obtenir le nom * @return */
	public String getName(){
    
		return name;
	}
	
	/** * @Title: setAge * @Description: Fixer l'âge * @param a */
	public void setAge(int age){
    
		//age=age;
		this.age=age;
	}
	
	/** * @Title: getAge * @Description: Obtenir l'âge * @return */
	public int getAge(){
    
		return age;
	}
	
}

public class StudentDemo {
    
	public static void main(String[] args) {
    
		//Créer un objet étudiant
		Student s=new Student();
		System.out.println(s.getName()+"---"+s.getAge());
        s.setName("Wu - kyung");
		s.setAge(35);
		System.out.println(s.getName()+"---"+s.getAge());
	}
}

4.4 Méthode de construction

4.4.1 Aperçu de l'action de la méthode de construction

Initialiser les données de l'objet

4.4.2 Format de la méthode de construction

Le nom de la méthode est le même que le nom de la classe

Aucun type de valeur de retour,CompagnievoidPas du tout.

Aucune valeur de retour spécifique

4.4.2.1 CAS

/** * @ClassName: Student * @Description: Classe d'étudiants * Company www.igeekhome.com * * Méthode de construction: * Initialiser les données de l'objet * * Format: * Le nom de la méthode est le même que le nom de la classe * Aucun type de valeur de retour,CompagnievoidPas du tout. * Aucune valeur de retour spécifique * */
public class Student {
    
	/** * @Title: StudentMéthode de construction non paramétrique de la classe */
	public Student(){
    
		System.out.println("C'est la méthode de construction.");
	}
}

//Catégorie d'essai
public class StudentDemo {
    
	public static void main(String[] args) {
    
		// Comment invoquer une méthode de construction ?
		//AdoptionnewAppel par mot - clé
		//Format:Nom de la classe Nom de l'objet = new Méthode de construction(...);
		// C'est - à - dire le format dans lequel l'objet est créé 
		Student s=new Student();
	}
}

4.4.3 Considérations relatives à la méthode de construction

Si vous ne fournissez pas de méthode de construction,La méthode de construction par défaut est donnée

Si vous fournissez une méthode de construction,Le système ne sera plus disponible

Les méthodes de construction peuvent également être surchargées

4.4.3.1 CAS

/** * @ClassName: Student * @Description: Classe d'étudiants * Company www.igeekhome.com * * Méthode de construction: * Initialiser les données de l'objet * * Format: * Le nom de la méthode est le même que le nom de la classe * Aucun type de valeur de retour,CompagnievoidPas du tout. * Aucune valeur de retour spécifique * * Considérations relatives à la méthode de construction: * A:Si vous ne fournissez pas de méthode de construction, Le système donne une méthode de construction par défaut sans paramètre  * B:Si vous fournissez une méthode de construction, La méthode de construction par défaut sans paramètre n'est plus disponible  * À ce moment - là., Si vous voulez utiliser une méthode de construction sans paramètres , Vous devez le faire vous - même.  * Recommandations:Donner la méthode de construction sans paramètre * C:Les méthodes de construction peuvent également être surchargées * * Assignation des variables membres: * A:setXxx()Méthodes * B:Méthode de construction avec paramètres */
public class Student {
    
	/** * @Fields name : Nom */  
	private String name;
	/** * @Fields age : Âge */  
	private int age;
	
	/** * @Title: StudentMéthode de construction non paramétrique de la classe */
	/* public Student(){ System.out.println("C'est la méthode de construction."); }*/
	
	public Student(){
    }
	
	/** * @Title: Student * @param name */
	public Student(String name){
    
		this.name=name;
	}

	/** * @Title: Student * @param age */
	public Student(int age){
    
		this.age=age;
	}
	
	/** * @Title: Student * @param name * @param age */
	public Student(String name,int age){
    
		this.name=name;
		this.age=age;
	}
	
	/** * @Title: show * @Description:  Afficher les méthodes d'information des étudiants  */
	public void show(){
    
		System.out.println(name+"---"+age);
	}
}
//Catégorie d'essai
public class StudentDemo {
    
	public static void main(String[] args) {
    
		// Comment invoquer une méthode de construction ?
		//AdoptionnewAppel par mot - clé
		//Format:Nom de la classe Nom de l'objet = new Méthode de construction(...);
		// C'est - à - dire le format dans lequel l'objet est créé 
		//public Student()
		Student s=new Student();
		s.show();
		
		//public Student(String name)
		Student s2=new Student("Wu - kyung");
		s2.show();
		
		//public Student(int age)
		Student s3=new Student(35);
		s3.show();
		
		//public Student(String name,int age)
		Student s4=new Student("Wu - kyung", 35);
		s4.show();
	}
}

4.5 Codage et essais des classes standard

4.5.1 Catégorie

  • Variable membre

  • Méthode de construction

    ​ Méthode de construction sans paramètres

    ​ Méthode de construction paramétrique

  • Méthode d'adhésion

    ​ getXxx()

    ​ setXxx()

4.5.2 Comment attribuer une valeur à une variable membre

Méthode de construction sans paramètres+setXxx()

Méthode de construction paramétrique

4.5.3 Cas standard orienté objet

4.5.3.1 Classe d'étudiants

4.5.3.2 CAS

public class Student {
    
	//Variable membre
	/** * @Fields name : Nom */  
	private String name;
	
    /** * @Fields age : Âge */  
	private int age;
   
    //Méthode de construction
	/** * @Title: Student */	
	public Student(){
    }
	
	/** * @Title: Student * @param name * @param age */
	public Student(String name,int age){
    
		this.name=name;
		this.age=age;
	}
	
	//Méthode d'adhésion
	/** * @Title: setName * @Description: Définir le nom * @param name */
	public void setName(String name){
    
		this.name=name;
	}
	
	/** * @Title: getName * @Description: Obtenir le nom * @return */
	public String getName(){
    
		return name;
	}
	
	/** * @Title: setAge * @Description: Fixer l'âge * @param age */
	public void setAge(int age){
    
		this.age=age;
	}
    /** * @Title: getAge * @Description: Obtenir l'âge * @return */
	public int getAge(){
    
		return age;
	}
	
}
//Catégorie d'essai
public class StudentDemo {
    
	public static void main(String[] args) {
    
		//Méthode de construction sans paramètres+setXxx()Méthodes
		Student s=new Student();
		s.setName("Wu - kyung");
		s.setAge(35);
		System.out.println(s.getName()+"---"+s.getAge());
		
		//Méthode de construction paramétrique
		Student s2=new Student("Wu - kyung", 35);
		System.out.println(s2.getName()+"---"+s2.getAge());
	}
}

版权声明
本文为[Vers le Haut]所创,转载请带上原文链接,感谢
https://cdmana.com/2022/01/202201080601056445.html

Scroll to Top