


Chapitre sur l'amélioration de Java (1) ----- Comprendre l'encapsulation des trois principales caractéristiques de Java
Cela fait presque trois ans que je suis entré en contact avec Java au cours de ma deuxième année. Du HTML et CSS les plus basiques au SSH final, je l'ai parcouru étape par étape. J'étais heureux, déçu et seul. Bien qu'il soit moine à mi-chemin, il a achevé son « étude » grâce à ses propres efforts. Pendant cette période, j'ai participé à des institutions de formation, mais je n'aimais vraiment pas ce genre de méthode de formation, alors j'ai abandonné et j'ai choisi l'auto-apprentissage (pauvre, j'ai payé 6 000 yuans). c'était plus amusant. L'effort et le gain étaient seulement Vous le savez vous-même. Huang Tian a été à la hauteur de son travail acharné, mais je suis stupide. Au cours du premier semestre de sa dernière année, il a finalement terminé Java par lui-même (il a fait un détour et a perdu six mois) et a obtenu un bon travail avec. toi beaucoup!
Trop de potins ! En ce qui concerne le sujet, LZ vient de terminer récemment la lecture du modèle de conception et a beaucoup de sentiments. Et en train de travailler, j'ai profondément le sentiment que les fondations de Java ne sont pas assez solides. Par exemple, je ne suis pas familier avec IO, je ne comprends pas le garbage collection, le polymorphisme, la réflexion et même les trois fonctionnalités les plus élémentaires sont confuses. moi! Je suis donc déterminé à rattraper mes bases Java ! Dès la première leçon---Encapsulation!!!!!!
Une des trois caractéristiques majeures---Encapsulation
L'encapsulation signifie littéralement emballage, et le point professionnel est la dissimulation d'informations, fait référence à l'utilisation de types de données abstraits pour encapsuler des données et des opérations basées sur les données afin de former une entité indépendante indivisible. Les données sont protégées à l'intérieur du type de données abstrait, cachant autant que possible les détails internes et ne conservant que certaines interfaces externes qui lui permettent de le faire. communiquer avec le monde extérieur. Les autres objets du système ne peuvent communiquer et interagir avec cet objet encapsulé que via des opérations autorisées en dehors des données. C'est-à-dire que l'utilisateur n'a pas besoin de connaître les détails internes de l'objet (bien sûr, il n'y a aucun moyen de le savoir), mais l'utilisateur peut accéder à l'objet via l'interface fournie par l'objet.
Pour l'encapsulation, un objet encapsule ses propres propriétés et méthodes, afin qu'il puisse effectuer ses propres opérations sans s'appuyer sur d'autres objets.
L'utilisation de l'encapsulation présente trois avantages majeurs :
1. Une bonne encapsulation peut réduire le couplage.
2. La structure interne de la classe peut être modifiée librement.
3. Les membres peuvent être contrôlés avec plus de précision.
4. Masquer les informations et mettre en œuvre les détails.
Tout d'abord, regardons deux classes : Husband.java, Wife.java
public class Husband { /* * 对属性的封装 * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性 */ private String name ; private String sex ; private int age ; private Wife wife; /* * setter()、getter()是该对象对外开发的接口 */ public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void setWife(Wife wife) { this.wife = wife; } }
public class Wife { private String name; private int age; private String sex; private Husband husband; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public void setAge(int age) { this.age = age; } public void setHusband(Husband husband) { this.husband = husband; } public Husband getHusband() { return husband; } }
À partir des deux exemples ci-dessus, nous pouvons voir qu'il n'y a pas de getter pour la femme référence dans Husband (), et l’âge de la femme n’a pas de méthode getter(). Quant à la raison, je pense que tout le monde la connaît. Les hommes cachent leur femme dans des maisons profondes, et aucune femme ne veut que les autres connaissent son âge.
Ainsi, l'encapsulation privatise les propriétés d'un objet et fournit des méthodes pour les propriétés accessibles par le monde extérieur. Si nous ne voulons pas être accessibles par des méthodes extérieures, nous n'avons pas besoin de fournir de méthodes. pour accès extérieur. Mais si une classe ne fournit pas de méthodes d’accès externe, alors cette classe n’a aucun sens. Par exemple, nous considérons une maison comme un objet. Les belles décorations à l'intérieur, comme les canapés, les séries télévisées, les climatiseurs, les tables basses, etc., sont la propriété privée de la maison. Mais si nous n'avons pas ces murs. bloquez-le, les autres pourront-ils le voir d'un coup d'œil ? Aucune intimité du tout ! Avec ce mur de protection, nous pouvons avoir notre propre intimité et changer le mobilier à l’intérieur à volonté sans affecter les autres. Mais s’il n’y a ni portes ni fenêtres, que signifie une boîte noire bien emballée ? Par conséquent, d’autres peuvent également voir le paysage intérieur à travers les portes et les fenêtres. Par conséquent, les portes et les fenêtres sont les interfaces des objets de la maison laissées au monde extérieur pour y accéder.
Grâce à cela, nous ne pouvons pas vraiment apprécier les avantages de l’encapsulation. Nous analysons maintenant les avantages de l'encapsulation du point de vue du programme. Si nous n'utilisons pas d'encapsulation, alors l'objet n'a pas setter() et getter(), alors la classe Husband devrait être écrite comme ceci :
public class Husband { public String name ; public String sex ; public int age ; public Wife wife; }
Nous devrions l'utiliser comme ceci :
Husband husband = new Husband(); husband.age = 30; husband.name = "张三"; husband.sex = "男"; //貌似有点儿多余
Mais que se passe-t-il si nous devons modifier le mari ce jour-là, par exemple, changer l'âge en type String ? C'est normal que vous n'utilisiez cette classe qu'à un seul endroit. Si vous en avez des dizaines, voire des centaines, la changerez-vous en crash ? Si l'encapsulation est utilisée, nous n'avons pas besoin d'apporter de modifications. Il suffit de modifier légèrement la méthode setAge() de la classe Husband. >
public class Husband { /* * 对属性的封装 * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性 */ private String name ; private String sex ; private String age ; /* 改成 String类型的*/ private Wife wife; public String getAge() { return age; } public void setAge(int age) { //转换即可 this.age = String.valueOf(age); } /** 省略其他属性的setter、getter **/
Autres lieux toujours référence (husband.setAge(22)) inchangée.
到了这里我们确实可以看出,封装确实可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码。
我们在看这个好处:可以对成员变量进行更精确的控制。
还是那个Husband,一般来说我们在引用这个对象的时候是不容易出错的,但是有时你迷糊了,写成了这样:
Husband husband = new Husband(); husband.age = 300;
也许你是因为粗心写成了,你发现了还好,如果没有发现那就麻烦大了,逼近谁见过300岁的老妖怪啊!
但是使用封装我们就可以避免这个问题,我们对age的访问入口做一些控制(setter)如:
public class Husband { /* * 对属性的封装 * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性 */ private String name ; private String sex ; private int age ; /* 改成 String类型的*/ private Wife wife; public int getAge() { return age; } public void setAge(int age) { if(age > 120){ System.out.println("ERROR:error age input...."); //提示錯誤信息 }else{ this.age = age; } } /** 省略其他属性的setter、getter **/ }
上面都是对setter方法的控制,其实通过使用封装我们也能够对对象的出口做出很好的控制。例如性别我们在数据库中一般都是已1、0方式来存储的,但是在前台我们又不能展示1、0,这里我们只需要在getter()方法里面做一些转换即可。
public String getSexName() { if("0".equals(sex)){ sexName = "女"; } else if("1".equals(sex)){ sexName = "男"; } else{ sexName = "人妖???"; } return sexName; }
在使用的时候我们只需要使用sexName即可实现正确的性别显示。同理也可以用于针对不同的状态做出不同的操作。
public String getCzHTML(){ if("1".equals(zt)){ czHTML = "<a href='javascript:void(0)' onclick='qy("+id+")'>启用</a>"; } else{ czHTML = "<a href='javascript:void(0)' onclick='jy("+id+")'>禁用</a>"; } return czHTML; }
鄙人才疏学浅,只能领悟这么多了,如果文中有错误之处,望指正,鄙人不胜感激!
以上就是 java提高篇(一)-----理解java的三大特性之封装的内容,更多相关内容请关注PHP中文网(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)

Selon les informations de ce site du 17 avril, TrendForce a récemment publié un rapport estimant que la demande pour les nouveaux produits de la plate-forme Blackwell de Nvidia est haussière et devrait entraîner une augmentation de la capacité totale de production d'emballages CoWoS de TSMC de plus de 150 % en 2024. Les nouveaux produits de la plate-forme Blackwell de NVIDIA comprennent des GPU de série B et des cartes accélératrices GB200 intégrant le propre processeur GraceArm de NVIDIA. TrendForce confirme que la chaîne d'approvisionnement est actuellement très optimiste quant au GB200. On estime que les livraisons en 2025 devraient dépasser le million d'unités, représentant 40 à 50 % des GPU haut de gamme de Nvidia. Nvidia prévoit de livrer des produits tels que le GB200 et le B100 au second semestre, mais le conditionnement des plaquettes en amont doit encore adopter des produits plus complexes.

Ce site Web a rapporté le 9 juillet que les processeurs de la série « Strix » à architecture AMD Zen5 auront deux solutions de packaging. Le plus petit StrixPoint utilisera le package FP8, tandis que le StrixHalo utilisera le package FP11. Source : source videocardz @Olrak29_ La dernière révélation est que la taille du boîtier FP11 de StrixHalo est de 37,5 mm x 45 mm (1 687 millimètres carrés), ce qui est la même que la taille du boîtier LGA-1700 des processeurs Intel AlderLake et RaptorLake. Le dernier APU Phoenix d'AMD utilise une solution de packaging FP8 d'une taille de 25*40 mm, ce qui signifie que le F de StrixHalo

La technologie d'encapsulation et l'encapsulation d'applications en PHP sont un concept important dans la programmation orientée objet. Elle fait référence à l'encapsulation de données et d'opérations sur les données afin de fournir une interface d'accès unifiée aux programmes externes. En PHP, l'encapsulation peut être réalisée via des modificateurs de contrôle d'accès et des définitions de classe. Cet article présentera la technologie d'encapsulation dans PHP et ses scénarios d'application, et fournira quelques exemples de code spécifiques. 1. Modificateurs de contrôle d'accès encapsulés En PHP, l'encapsulation est principalement réalisée via des modificateurs de contrôle d'accès. PHP fournit trois modificateurs de contrôle d'accès,

Introduction à l'encapsulation Axios et aux méthodes courantes dans Vue Axios est une bibliothèque HTTP basée sur Promise. Son avantage est qu'elle offre une bonne lisibilité, une facilité d'utilisation et une évolutivité. En tant que framework frontal populaire, Vue fournit également une prise en charge complète d'Axios. Cet article expliquera comment encapsuler Axios dans Vue et présentera certaines méthodes couramment utilisées d'Axios. 1. Encapsulation d'Axios Au cours du processus de développement, nous avons souvent besoin d'effectuer une encapsulation personnalisée d'Axios, comme

En encapsulant le code, les fonctions C++ peuvent améliorer l'efficacité du développement de l'interface graphique : Encapsulation du code : les fonctions regroupent le code en unités indépendantes, ce qui rend le code plus facile à comprendre et à maintenir. Réutilisabilité : les fonctions créent des fonctionnalités communes qui peuvent être réutilisées dans toutes les applications, réduisant ainsi la duplication et les erreurs. Code concis : le code encapsulé rend la logique principale concise et facile à lire et à déboguer.

Selon des informations publiées sur ce site Web le 11 juillet, l'Economic Daily a rapporté aujourd'hui (11 juillet) que Foxconn Group est entré dans le domaine de l'emballage avancé, en se concentrant sur la solution actuelle de semi-conducteurs d'emballage à sortance au niveau du panneau (FOPLP). 1. Après sa filiale Innolux, Sharp, investi par Foxconn Group, a également annoncé son entrée dans le domaine japonais de l'emballage à sortance au niveau des panneaux et devrait être mis en production en 2026. Le groupe Foxconn lui-même a une influence suffisante dans le domaine de l'IA, et en comblant ses lacunes en matière de packaging avancé, il peut fournir des services « à guichet unique » pour faciliter l'acceptation d'un plus grand nombre de commandes de produits d'IA à l'avenir. Selon les informations publiques publiées sur ce site Internet, Foxconn Group détient actuellement 10,5 % des actions de Sharp. Le groupe a déclaré qu'il n'augmenterait ni ne réduirait ses participations à ce stade et qu'il les maintiendrait.

Comment implémenter l'encapsulation et l'héritage dans le langage Go L'encapsulation et l'héritage sont deux concepts importants dans la programmation orientée objet. Ils peuvent rendre le code plus modulaire et plus maintenable, et facilitent également la réutilisation du code. Cet article expliquera comment implémenter l'encapsulation et l'héritage dans le langage Go et fournira des exemples de code correspondants. Encapsulation L'encapsulation consiste à encapsuler les données et les fonctions, à masquer les détails d'implémentation et à exposer uniquement les interfaces nécessaires pour un usage externe. En langage Go, l'encapsulation se fait grâce à des identifiants exportés et non exportés. Les identifiants avec des majuscules sont accessibles par d'autres packages

En tant que langage de programmation de haut niveau, Python est largement utilisé dans l'analyse de données, l'apprentissage automatique, le développement Web et d'autres domaines. Cependant, à mesure que la taille du code continue d’augmenter, le problème d’évolutivité des programmes Python devient progressivement apparent. Une mauvaise erreur d'évolutivité signifie que le programme Python ne peut pas bien s'adapter aux changements d'exigences dans certaines circonstances et ne peut pas traiter des données à grande échelle, ce qui entraîne de mauvaises performances du programme. Trop de dépendances, une mauvaise structure de code, le manque de documentation, etc. sont autant de causes d'erreurs de mauvaise évolutivité dans les programmes Python.
