01.Bases de Java - Encapsulation
Concepts de base
Java orienté objet possède trois fonctionnalités majeures : encapsulation, héritage, polymorphisme. L'encapsulation et l'héritage servent essentiellement au polymorphisme.
Encapsulation : Elle combine les propriétés et les opérations (ou services) d'un objet en un tout indépendant, et masque autant que possible les détails d'implémentation à l'intérieur de l'objet. En termes simples, cela signifie privatiser les variables membres de la classe et fournir des méthodes publiques pour accéder à ces variables membres.
Masquage des données : Si une variable membre est déclarée comme membre privé, elle n'est pas accessible directement via la classe externe, masquant ainsi la variable membre à l'intérieur de la classe. Pour cette raison, l’encapsulation est également appelée masquage de données.
JavaBean
JavaBean est une spécification qui stipule une bonne spécification d'encapsulation Tant que la classe est conforme à la spécification, elle s'appelle JavaBean.
Il présente les caractéristiques suivantes :
Les données membres (membres objets) doivent être modifiées par privé.
Fournir des méthodes setter/getter publiques pour chaque membre de l'objet
Le prototype du setter/getter doit être :
public void set 成员名(成员类型 arg);public 成员类型 get 成员名();
Étude de cas
1. Non encapsulé et encapsulé
Tout d'abord, regardons l'avenir. Variables membres encapsulées :
class Person{ // 将成员的访问权限设置为 public,这也为意味这谁都访问到它 public String name; public int age; }public class Test{ public static void main(String[] args) { Person person = new Person(); //通过类,我们可以直接操作成员变量 person.name ="kobe"; person.age =1000; //直接获得成员变量的值 System.out.println(person.name+"-"+person.age); } }
Ensuite, nous encapsulons la classe ci-dessus :
class Person { //1.将成员变量私有化,这样一来外部就不能直接访问到它们 private String name; private int age; //2.提供公共的方法来操作成员变量 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; } }public class Test { public static void main(String[] args) { Person person = new Person(); // 不能直接访问成员变量,而是通过提供的公共方法来设置/获取成员变量的值 person.setName("kobe"); person.setAge(1000); System.out.println(person.getName() + "-" + person.getAge()); } }
Jusqu'à présent, nous avons vu la différence générale entre les objets encapsulés et non encapsulés :
Pour les objets non encapsulés, nous accédons/définissons directement leurs variables membres
Et pour les objets encapsulés, nous devons utiliser les méthodes publiques fournies (telles que getter/setter) pour faire fonctionner les membres. variables
2.Encapsuler l'objet de contrôle
Si c'est comme ça, l'encapsulation semble n'avoir aucun effet, ensuite. nous regardons comment contrôler les objets via l'encapsulation :
class Person { private String name; private int age; private int city; //对于 name 的控制,直接取消了 setter 方法,这样外部只能访问,而不能设置 name 的值 public String getName() { // 直接返回值 return "kobe"; } public int getAge() { return age; } // 有两个 setter 方法,可以接收 int,String 类型的参数 public void setAge(int age) { this.age = age; } public void setAge(String age) { // 对参数值进行验证,默认只能输入数字 if(age.matches("[0-9]")){ this.age = Integer.valueOf(age); }else{ System.out.println("Error:年龄只能为数字"); } } // 在日常开发,我们一般会将文字转换成编码在数据库存储,因此在存储调用时就要做转换 public String getCity() { switch (city) { case 001: return "北京"; default: return "上海"; } } public void setCity(String city) { if("北京".equals(city)){ this.city = 001; }else if("上海".equals(city)){ this.city = 002; }else{ System.out.println("Error:没有找到该城市"); } } }public class Test { public static void main(String[] args) { Person person = new Person(); person.setAge("a"); //Error:年龄只能为数字 person.setAge(1000); //既可以接收 String 类型,也可以接收 int 类型 person.setCity("广州"); //Error:没有找到该城市 person.setCity("北京"); //此时已经被转换成 001 存储了 //在访问 city 成员变量时,001 又被转换成 北京 显示 System.out.println(person.getName()+"-"+person.getAge()+"-"+person.getCity()); } }
Grâce au code ci-dessus, nous pouvons résumer grossièrement le rôle de l'encapsulation :
Une bonne encapsulation réduit le couplage.
La structure à l'intérieur de la classe peut être modifiée librement.
permet un contrôle plus précis sur les membres.
Masquer les informations et mettre en œuvre les détails.
Référence
Ce qui précède est le contenu de 01.Java Basics - Encapsulation Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php. cn) !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.
