«La conclusion est la suivante.
Tout d'abord, je vais expliquer la fonction d'héritage à partir de l'histoire de base. (Je suis désolé si vous le savez.)
Les programmes plus anciens avaient peu de valeur commerciale et n'avaient que de petits développements. À partir de là, c'est devenu un développement à grande échelle, et il y avait un problème que nous voulions rendre le code à grande échelle plus facile à lire et manquait également de mémoire. Donc, en essayant d'économiser de la mémoire, je veux une réutilisation ou une abstraction! C'est comme ça que ça va être.
(Reconfirmer le sens de l'abstraction) Par exemple, lorsque nous expliquons aux autres "le baseball, le football, le tennis, etc. sont amusants!", En un mot, "les sports sont amusants!"
Dans l'ancien temps, la programmation n'avait pas le pouvoir (l'abstraction) de rassembler de telles significations en double. C'est là que le résumé orienté objet (Java), qui peut également exprimer la classe parent (abstract), est entré en jeu. (Il n'y avait pas d'interface à ce moment-là.)
Le résumé était si flexible qu'il était difficile à lire. La méthode (fonction) et la variable globale (état) sont sorties, et elles n'ont pas été intuitivement comprises. Eh bien, je pourrais toujours l'utiliser.
À un moment donné, il y a eu une demande de développement orienté objet utilisant abstrait. Je veux le faire avec le polymorphisme. Et je veux faciliter la lecture en définissant un peu plus de restrictions.
En parlant de polymorphisme, c'est un type List. Par exemple, vous voulez que le type List puisse gérer à la fois ArrayList et LinkedList, et vous voulez pouvoir gérer .size () et .add () avec n'importe quel type.
Si vous pouvez gérer les relations d'héritage à de telles fins, écrivez-les soigneusement dans l'interface pour les rendre plus faciles à lire! L'interface a donc été fournie à Java.
Au fil du temps, il est devenu Java8 et l'interface elle-même avait des fonctions. C'est la fonction par défaut. Je suis sûr que cette histoire est un problème dont je ne comprends pas vraiment la différence entre l'abstrait et l'interface.
La raison pour laquelle cette fonction par défaut a été fournie est différente de la demande d'abstraction jusqu'à présent. Je pense que c'était une mesure contraire à la loi de Moore. Il y avait une demande de parallélisation approfondie parce que nous voulions économiser autant que possible les ressources des semi-conducteurs existants afin d'être en mesure de faire face au problème de pénurie de ressources autant que possible.
Par conséquent, une API de flux a été créée pour rendre le traitement parallèle facile et sûr, et une simple expression lambda a été introduite car elle est difficile à comprendre car elle est pleine de classes anonymes.
En d'autres termes, default a été créé pour fournir une API de flux pour les contre-mesures d'effondrement de la loi de Moore, il n'y a donc actuellement aucune règle selon laquelle la valeur par défaut peut être utilisée librement.
Comment utiliser default est fondamentalement une fonction requise pour l'expression API / lambda de flux, et je n'étais pas sûr de pouvoir utiliser la fonction par défaut librement. Ce sera bien d'attendre un moment.
Vous ne pouvez pas hériter de plusieurs résumés comme l'interface. Il semble qu'il existe également une histoire de création d'une autre interface de fonction d'abstraction, car elle souhaite hériter plusieurs fois. (Si l'héritage multiple est possible, il sera difficile de suivre les bogues, et il semble que dans le passé, on disait que c'était une personne interdite ou une boîte de Pandore et qu'on s'y opposait.)
L'ordinateur est un passe-temps ↓ Les ordinateurs sont une source d'affaires! ↓ Les ordinateurs sont une excellente industrie! Je veux gérer la programmation à plus grande échelle! Au moins, je veux que la programmation ait une fonction d'abstraction! Donc je veux aussi économiser de la mémoire! ↓ Java haute performance émerge. Un résumé est également fourni. ↓ Il est difficile de lire un résumé. Je veux aussi du polymorphisme. ↓ Fournir une interface ↓ La loi de Moore est en danger ...? Je ne peux pas rire ... Saya! Puisque nous voulons gérer efficacement les ressources de semi-conducteurs existantes, fournissons une fonction qui nous permet d'écrire un traitement parallèle approfondi de manière concise! ↓ Fournir une API de flux ou une expression lambda
Je pense que c'était comme ça.
Q. Quel est le but de la fonction de coercition de la réification (remplacement)?
A. Si vous voulez faire abstraction des choses, vous devez incarner le contraire. Par exemple, lorsque vous essayez de mettre en œuvre "jouer avec le baseball", "jouer avec le football" et "jouer avec le tennis"
(Langage fictif)
abstract sports
do (play with ??)
Je pense qu'il sera conçu. N'est-il pas plus facile de forcer cette réification à chaque fois?
@Override
do (play with "baseball")
@Override
do (play with "soccer")
@Override
do (play with "tennis")
Je pense que ce sera. Donc, la réponse à votre question est: "Je voulais concevoir avec abstraction, donc c'était facile d'avoir une fonction concrète."
Recommended Posts