Maison  >  Article  >  Java  >  java - introduction détaillée à l'orientation objet (1)

java - introduction détaillée à l'orientation objet (1)

王林
王林avant
2019-08-22 17:16:272905parcourir

1. Qu'est-ce que l'orientation objet ?

L'orientation objet (OO) est une méthode courante de conception de structure de programme.
La base de la pensée orientée objet est de rassembler les données et les méthodes associées dans un nouveau type de données composite, puis d'utiliser le type de données composite nouvellement créé comme base du projet.

L'orienté objet est un concept très abstrait, qui est relatif à l'orienté processus.

Les processus et les objets sont tous deux des idées pour résoudre des problèmes.

Orienté processus : mettre l'accent sur un comportement fonctionnel, un processus, ce qu'il faut faire en premier et que faire ensuite ;

Orienté objet : encapsuler des fonctions dans des objets, en mettant l'accent sur le fait d'avoir une certaine fonction d'objet ;

Selon la pensée orientée objet, tout peut être considéré comme un objet !

Trois caractéristiques de l'orientation objet :

Encapsulation

Héritage

Polymorphisme (Polymorphisme).

Mon résumé :

Orienté processus : mettant l'accent sur la mise en œuvre de fonctions spécifiques (exécuteur)

Orienté objet : mettant l'accent sur la capacité à être fonctionnel ; objet. (Manager)

2. Classe

Une classe est la plus petite unité de programmation du langage Java et la base de la conception et de la mise en œuvre de programmes Java. profondeur. Présenter les connaissances pertinentes de la classe.
Le concept de classe
Une classe est une description des caractéristiques et fonctions communes d'un groupe de choses. Une classe est une description globale d'un groupe de choses. C'est la plus petite unité lors de la conception selon la technologie orientée objet, et c'est aussi le module le plus basique qui constitue un projet. Le concept de classe est abstrait, semblable aux dessins dans la conception architecturale, et constitue une abstraction du contenu spécifique qui doit être représenté dans la réalité. Les classes contiennent uniquement des structures-cadres, pas des données spécifiques. La classe représente donc l’ensemble et non un individu spécifique.

Mon résumé : Les cours sont abstraits, les objets sont concrets et réels !

Définition de la classe :

[modificateur] classe nom de la classe {

1~n méthodes de construction

0~n champs ;

0~n méthodes

}

définit une classe, qui définit en fait les objets de la classe

L'objet contient :

state (Attributs; )

Fonction, comportement ; (Méthode)

Décrire les objets à travers les classes

État--------variables membres; , comportement - méthode ;

Par exemple

 :

class Person{
//属性
   private String name;
   private int age;
   private int sal;
   //方法
   public void show(){
      System.out.println("个人情况:"+name+age+sal);
   }
}

3. Méthode de construction

Méthode de construction : utiliser Pour construire une instance. d'une classe (chaque classe a par défaut un constructeur sans paramètre, qui doit être appelé avec new)

Champ : les données contenues dans la classe ou l'objet, une description de l'état de la classe

Méthode : Caractéristiques ou comportement d'une classe ou d'un objet

Fonction :

Initialiser les champs dans une classe et peut être utilisé pour créer des objets.

Caractéristiques :

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

Pas besoin de définir le type de valeur de retour

Pas besoin d'écrire un retour déclaration

Remarque

 : Caractéristiques du constructeur par défaut.

Plusieurs constructeurs existent sous forme de surcharge.

Surcharge de la méthode constructeur : (Adaptez celle qui est nécessaire et appelez laquelle)

this([paramètre réel]); appelle la méthode constructeur de la classe actuelle

Notez que

: this([actual paramètre]); doit être placé dans la première ligne du constructeur

Format de génération d'objet

: class Name Nom de l'objet = new Class name ();

Parce qu'il y a (), c'est une méthode en fait, c'est un constructeur, et c'est un constructeur non privé.

Par exemple :

CellPhone cp = new CellPhone();
rrree

4. Mot-clé statique

.

Caractéristiques :

Chargé au fur et à mesure du chargement de la classe

Priorité à l'existence de l'objet

Occupé par tous les objets Partagé

peut être appelé directement par le nom de la classe

Notes d'utilisation :

Les méthodes statiques ne peuvent accéder qu'aux membres statiques

Mais les méthodes membres non statiques peuvent accéder aux membres statiques ;

Cela ne peut pas être utilisé dans les méthodes statiques, et le super mot-clé

La méthode principale (main) est statique (vous pouvez utilisez le nom de la classe pour appeler la méthode main statique ! Mais elle tombera dans une boucle infinie, provoquant un débordement de mémoire et l'arrêt automatique du jvm )

public static void main(String[] agrs ! ){}


Peut modifier les champs et les méthodes.

Un membre modifié avec static signifie qu'il appartient à cette classe, plutôt qu'à une seule instance de la classe.

Champ modifié STATIC == champ de classe

Méthode modifiée STATIC == méthode de classe

n'utilisant pas les champs et méthodes modifiés statiques, les membres appartiennent à une seule instance de la classe , les membres appartiennent à un seul exemple, n'appartiennent pas à la classe.

Aucun champ statique modifié == Champs d'instance

Aucune méthode statique modifiée == Méthodes d'instance


Champs et méthode d'accès aux classes et aux instances syntaxe :

Membres de la classe d'accès : Class.Field Class.Method

Membres de l'instance d'accès : Instance.Field Instance.Method

Mon résumé :

les champs et méthodes modifiés statiquement peuvent être appelés via des classes ou des instances ;

les champs et méthodes sans modification statique ne peuvent être appelés qu'à l'aide d'instances (utilisation recommandée : nom de la classe à appeler ; en fait, au niveau inférieur, lorsqu'un objet appelle un membre de la classe, l'appel du nom de classe sera également converti)

Le mot-clé static ne peut pas être utilisé avec this et super en même temps !


5. Objet anonyme

Un objet sans nom, crée un objet et ne l'affecte pas à une variable ;


Caractéristiques :

Lorsqu'une méthode ou un champ n'est appelé qu'une seule fois ;

peut être transmis en tant que paramètre réel ; 🎜 >N'ouvrez qu'une zone de stockage dans le tas,

ne peut être utilisée qu'une seule fois, et sera détruite après utilisation

Quand doit-elle être utilisée ? Ne l'utilisez qu'une seule fois ! !

new Person(); représente un objet anonyme, un objet sans nom

new Person().age = 17;//使用一次之后就被销毁了

6、this关键字

特点:this表示当前对象。

当前对象  ←→  当前正在调用实例成员的对象

换言之:谁调用了方法,谁就是当前对象。

什么时候使用this关键字呢?

方法间的相互调用;

this.字段;

构造器中相互调用,但是此时this([参数])必须写在构造方法第一行。

this不能用在static修饰的方法里和static修饰的代码块里;

Eg:构造方法中的this.name = name;

7、面向对象之封装

封装的两个含义:

1.把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类);

2."信息隐藏", 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段;

封装机制在程序中的体现是:

把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保证外界不能任意更改其内部的字段值,也不允许任意调动其内部的功能方法。

程序中的一种体现:

通常将类中的成员变量私有化(private),通过对外提供方法(setXxx,getXxx),可对该变量(xxx)进行访问。

boolean 类型的变量没有getXX,只有 isXX;

 
Eg:
 
class Person1{
 
   private String name;
 
   private int age;
 
   private int sal;
 
  
 
   public String getName() {
 
      return name;
 
   }
 
 
 
   public void setName(String name) {
 
      this.name = name;
 
   }
 
 
 
   public int getAge() {
 
      return age;
 
   }
 
 
 
   public void setAge(int age) {
 
      this.age = age;
 
   }
 
}

8、访问修饰符

private 类访问权限:本类内部可以访问,不能继承到子类;

default 什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承;

protected 子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类;

public 公共访问权限:任何地方都可以访问,能继承到子类;

总结:

java - introduction détaillée à lorientation objet (1)

9. Analyse de la conception des classes

Idées d'analyse :

Écrire des classes selon les exigences contenues champs ;

Tous les champs doivent être privatisés ;

Les champs encapsulés peuvent être définis et obtenus via des setters et des getters

Vous pouvez en ajouter autant que nécessaire ; >

Les méthodes correspondantes peuvent être ajoutées selon les besoins ;

Toutes les méthodes de la classe ne doivent pas être traitées directement (sortie et impression), mais doivent être laissées au traitement de l'appelant.

10. Héritage orienté objet

Il y a d'abord des classes qui reflètent les caractéristiques des choses générales, et ensuite sur cette base, des classes qui refléter les caractéristiques des choses spéciales ;

En d'autres termes : l'héritage est une relation du général au spécial ;

Caractéristiques:

1. Amélioration de la réutilisabilité du code.

2. Créer une relation entre les classes. Ce n'est qu'avec cette relation d'héritage que nous pouvons avoir les caractéristiques du polymorphisme.

3. Le langage Java ne prend en charge que l'héritage unique (différent du langage C).

Parce que l'héritage multiple peut facilement entraîner des risques de sécurité (s'il y a trop de classes parents et que les fonctions sont les mêmes, y aura-t-il une incertitude dans l'appel ? Écraser une méthode, qui la remplace ?).

ps : L'interface peut implémenter l'héritage multiple

4. Java prend en charge l'héritage à plusieurs niveaux. Object est la super classe de chaque classe et implémente une structure arborescente.

Mon résumé :

L'héritage est la condition préalable au polymorphisme.

Pour les classes, seul l'héritage unique est pris en charge.

Format :

La classe [Modifier] SubClass étend la SuperClass

Selon cette relation, nous La SuperClass la classe est appelée classe parent ou classe de base, et la sous-classe est appelée sous-classe ou classe dérivée ou classe étendue

Mon résumé :

java.lang.Object ; Est la classe parent de toutes les classes,

Object est soit une classe parent directe, soit une classe parent indirecte.

Exemple :

Les étudiants sont un cas particulier de personnes. En ce moment, j'écris les caractéristiques communes des personnes de la classe Personne, afin de permettre aux étudiants d'avoir ces caractéristiques communes (d'autres comme). comme les enseignants peuvent aussi avoir ces points communs), je demande ensuite aux étudiants d'élargir la catégorie Personne.

Mon résumé :

La relation entre la sous-classe et la classe parent :

La sous-classe étend la classe parent (la sous-classe est un cas particulier de classe parent)

Principalement en fonction de la classe parent, puis ajoutez vos propres champs et méthodes.

Les membres privés de la classe parent ne peuvent pas être hérités par les sous-classes ;

La méthode de construction de la classe parent ne peut pas être héritée ;

Java ne prend en charge que l'héritage unique, pas multiple héritage;/ /Sinon, par exemple, si la méthode show hérite de plusieurs méthodes, je ne sais pas laquelle appeler.

Une classe a une et une seule classe parent directe

Lorsqu'une classe n'hérite pas explicitement d'une autre classe, la classe parent directe par défaut est la classe Object ; La classe parent directe de Student est Person, et la classe Object est également la classe parent de la classe Student, mais c'est une classe parent indirecte

Une fois qu'une classe hérite explicitement d'une autre classe, la classe parent directe par défaut est ; L'objet sera annulé ;

Une classe en Java ne peut avoir qu'une seule classe parent directe ;

java.lang.Object est la classe parent de toutes les classes, Object est soit une classe parent directe, soit une classe parent indirecte.

Le processus d'instanciation des objets de sous-classe

Dans l'opération d'héritage, pour l'instanciation des objets de sous-classe :

L'objet de sous-classe doit d'abord appeler la classe parent avant le constructeur de l'instanciation puis appelle son propre constructeur.

Ce qui précède fait partie du contenu de cet article. Je continuerai à organiser les connaissances orientées objet pour vous à l'avenir. S'il vous plaît, signalez tout ce qui ne va pas, merci !

Pour plus de questions connexes, veuillez visiter le site Web PHP chinois : Tutoriel vidéo JAVA

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer