JavaRush/Java Blog/Random EN/Java. Interview Reference Guide - Part 1. (Translation of...
dah4uk
Level 23

Java. Interview Reference Guide - Part 1. (Translation of the article)

Published in the Random EN group
members
Original article is at: http://www.javacodegeeks.com/2014/02/java-interview-reference-guide-part-1.html Posted by: Nitin Kumar, in Core Java, February 3, 2014

Java. Object Oriented Concept.

Java is based on object-oriented concept, which gives a higher level of abstraction to solve any problem in a real way. The object-oriented approach conceptualizes the solution to a problem in real-world objects that are easier to reuse in applications. For example: chair, fan, dog, computer, etc. In Java, a class is a documentation, template, or prototype that defines the general behavior of objects of the same kind. An instance is an implementation of a particular class, and all instances of the class have similar properties as presented in the class description. For example, you can define a class called House with the number of rooms as an attribute, and create objects: a house with 2 rooms, a house with 3 rooms, etc.
Advantages:
Listed below are a few benefits of object-oriented software development:
  • Lower maintenance costs, mainly due to modularity.
  • Code is easier to reuse due to features such as inheritance, which consequently speeds up development.
  • Increases code reliability and flexibility.
  • The code is easier to understand because it simulates the real world.
  • Better abstraction at the object level.
  • Reducing the complexity of transition from one development stage to another.
There are four main concepts of OOP:
  • Encapsulation
  • Inheritance
  • Polymorphism
  • Abstraction
Encapsulation:
Encapsulation represents rules for other objects that indicate which elements are hidden and which elements are exposed to other objects. In Java, we use the private access modifier to hide a method and restrict access to a variable from the external environment. Java also provides various access modifiers, such as public, which is the default, protected, and private, which are used to restrict visibility at various levels, but the ultimate goal of encapsulation is to hide those elements that should not be changed. In practice, it is best when a class has only one reason to change, and the encapsulation implements the design principles of that "one reason" . In practice, Encapsulation is supposed to hide methods to avoid disrupting other classes.
Advantages:
Listed below are several benefits of encapsulation:
  • You can protect the internal state of an object by hiding its attribute.
  • This increases the modularity of the code, preventing interactions between objects in unexpected ways.
  • Ease of use increases.
  • Object specific conditions are supported.
  • Encapsulation makes software easier to maintain
  • Code changes can be independent
Polymorphism:
ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ - это ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ (Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ (Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…), Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π² основС. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ классы ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ динамичСски Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ссылку класса. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся класс Shape (Ρ„ΠΈΠ³ΡƒΡ€Π°), ΠΈ всС классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Π³ΠΎ (ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, ΠΊΡ€ΡƒΠ³, додСкаэдр, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, Π·Π½Π°ΠΊ ΠΈ Ρ‚.Π΄.). Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Draw() ΠΈ клиСнтский code ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия: Shape shape = new Square(); Shape.area() Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для любой Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΡ€Π΅Π»Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ code Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ классами ΠΈ Π½Π΅Ρ‚ нСобходимости Π·Π½Π°Ρ‚ΡŒ HowΠΎΠΉ класс Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, Ρ‚.ΠΊ. всС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ. ΠŸΡ€ΠΎΡ†Π΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ языками программирования, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ динамичСский ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, называСтся динамичСским связываниСм. ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ - это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€Π° Π±ΠΎΠ»Π΅Π΅ спСциализированных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² зависимости ΠΎΡ‚ выполнСния Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ an object. ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· участия HowΠΈΡ…-Π»ΠΈΠ±ΠΎ абстрактных классов.
ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:
  • БоздаСтся code, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ: это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ссли ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ созданы классы, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈ протСстированы, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹, Π½Π΅ Π·Π°Π±ΠΎΡ‚ΡΡΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ написано Π² классС.
  • Π­Ρ‚ΠΎ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΈ слабосвязанный code.
  • ВрСмя компиляции Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ, Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° становится быстрСС.
  • ДинамичСскоС связываниС: Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ интСрфСйс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для создания ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ рСализациями.
  • Полная рСализация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сигнатуры ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.
ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для достиТСния ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°: ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ интСрфСйсов с двумя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ: Один Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈ сигнатурами. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… НапримСр: while(it.hasNext()) { Shape s = (Shape) it.next(); totalArea += s.area(dim); //полиморфичСский Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ an object. } Java.  Interview Reference Guide - Part 1. (Translation of the article) - 1
ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° or Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ or статичСский ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ:
ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° интСрфСйсов с нСсколькими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ классС с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚Π΅Π»ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. КакоС-Ρ‚ΠΎ врСмя ΠΎΠ½Π° Π½Π°Π·Ρ‹Π²Π°Π»Π°ΡΡŒ статичСским ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Π½Π΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ двумя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ списками Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Она Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с наслСдованиСм ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, это Π½Π΅ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. [Π“Π»Π°Π²Π° пСрвая Java]
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ с использованиСм Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ² Π² Java:
ΠŸΡ€ΠΈ объявлСнии класса, Name поля ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈ Name ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Java ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ парамСтричСский ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ с использованиСм Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся список, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащих Π΄ΠΆΠ΅Π½Π΅Ρ€Π΅ΠΊΠΈ. List list = new ArrayList ();
ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Java?
ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ наличия экзСмпляра класса. Бмысл ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ подкласс класса ΠΈ an object Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ этот подкласс, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² супСрклассС (or ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² подклассС). БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ связан с HowΠΈΠΌ-Π»ΠΈΠ±ΠΎ экзСмпляром класса, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ это понятиС ΠΊ Π½Π΅ΠΌΡƒ Π½Π΅ примСняСтся. Π Π°Π½Π΅Π΅ Π²Ρ‹Π΄Π²ΠΈΠ³Π°Π»ΠΈΡΡŒ Π΄Π²Π΅ основныС ΠΈΠ΄Π΅ΠΈ, продвиТСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ повлияли Π½Π° Π½Π΅Ρ‘. Одна ΠΈΠ· Π½ΠΈΡ… - это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΈ со стороны Smalltalk ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ JVM Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ (ΠΈΠ·-Π·Π° сбора мусора ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Ρ‡Π°ΡΡ‚ΡŒΡŽ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹) ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Java Π±Ρ‹Π»ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это. Другая состояла Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ цСлСвая аудитория для Java - это Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ C++. Π’Ρ‹Π·ΠΎΠ² статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² устроСн Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ для программистов C++ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ быстро, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΏΡƒΡ‚ΠΈ Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ классов, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, HowΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, Ρ‚Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΡˆΡŒΡΡ прямо Π² класс ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΡˆΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. [Stack overflow]
НаслСдованиС:
Оно Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ повСдСния (Ρ‚.Π΅. ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹) ΠΈ состояния (Ρ‚.Π΅. ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ доступны Π² этом ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ прСимущСство наслСдования состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ обСспСчиваСт Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования codeΠ° ΠΈ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ дублирования. УнаслСдованный класс Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ applications, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ добавляя Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ сдСлаСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡ‚Π½ΠΎ связанным, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ супСркласс, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ всС Π΄Π΅Ρ‚Π°Π»ΠΈ подклассов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΌΠΊΠΈ applications. Π­Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ПО, ΠΊΠΎΠ³Π΄Π° Π½ΠΎΠ²Ρ‹ΠΉ класс (подкласс) создаСтся ΠΈΠ· ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса (супСркласса) ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свойства супСркласса. Π˜Ρ‚Π°ΠΊ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ класс-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Ρƒ вас появляСтся класс-наслСдник, Ρ‚ΠΎ наслСдник наслСдуСт всС сущности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ.
ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:
  • Π›Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ code
  • УстанавливаСтся логичСскоС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ "ЯвляСтся ΠΊΠ΅ΠΌ-Ρ‚ΠΎ", НапримСр: Π‘ΠΎΠ±Π°ΠΊΠ° являСтся ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌ.
  • Код становится ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌ
  • ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ дублирования
НСдостатки:
  • ВСсная связь: подкласс зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ code тСсно связанным.
Абстракция:
Абстракция прСдставляСт собой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ класса ΠΈΠ· условий интСрфСйсов ΠΈ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½Π΅ учитывая Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Абстрактный класс Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ интСрфСйсы Π±Π΅Π· фактичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Он отдСляСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ an object ΠΎΡ‚ повСдСния or Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Абстракция ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, скрывая нСсущСствСнныС Π΄Π΅Ρ‚Π°Π»ΠΈ.
ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:
  • ΠŸΡ€ΠΈ использовании абстракции, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ an objectΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгруппированы Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ.
  • Часто измСнСния свойств or ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сгруппированы Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ останСтся Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ усorΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Анализа ΠΈ Π”ΠΈΠ·Π°ΠΉΠ½Π° - "Код Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ".
  • Π£ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ прСдставлСниС ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.
Различия ΠΌΠ΅ΠΆΠ΄Ρƒ абстракциСй ΠΈ инкапсуляциСй
Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ - это стратСгия, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… абстракции. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ относится ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ an objectΠΎΠ² - an objectΡ‹ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ своС состояниС ΠΈ ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΎΡ‚ доступа ΠΈΠ·Π²Π½Π΅; снаруТи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ класса ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ класса Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ класс абстрагируСт Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, относящиСся ΠΊ Π΅Π³ΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ. Абстракция - это Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½; Π΅Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ использования подклассов (срСди ΠΏΡ€ΠΎΡ‡ΠΈΡ…). НапримСр, список классов Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ - это абстракция для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ элСмСнтов, проиндСксированных ΠΏΠΎ ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ List'Π° Π±ΡƒΠ΄ΡƒΡ‚ ArrayList or LinkedList. Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взаимодСйствуСт со списком абстракций Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»Π΅Π½, Ρ‡Π΅ΠΌ Π²ΠΈΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ списка. [Stack overflow] Абстракция часто Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, Π±Π΅Π· скрытия инкапсуляциСй Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π² основС - Ссли класс прСдоставляСт своС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свою Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.
What Ρ‚Π°ΠΊΠΎΠ΅ абстрактный класс ΠΈ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄?
Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс прСдставлял Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйс для своих ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ создавал экзСмпляр an object этого класса. Π’Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΈΠΏΡƒ (нСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ этот интСрфСйс ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован. Π­Ρ‚ΠΎ достигаСтся ΠΏΡƒΡ‚Π΅ΠΌ указания класса абстрактным, ΠΏΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово abstract. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния: нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр абстрактного класса, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΡ‚ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. И обСспСчиваСт ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Абстрактный класс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ How абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ классС, Ссли ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ объявлСн абстрактным, класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн абстрактным. Однако, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π½Π΅ всСгда Π²Π΅Ρ€Π½ΠΎ. Если класс объявлСн How абстрактный, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ абстрактных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Π½Π΅ΠΌ. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ обСспСчиваСт Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π½ΠΎ обСспСчиваСт сигнатуру ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΎΠ½ называСтся абстрактным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. ЀактичСская рСализация возлагаСтся Π½Π° подклассы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ абстрактный класс. Абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½; Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Π³ΠΎ.
Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ абстрактный класс?
АбстрактныС классы ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ повСдСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ подклассам HowΠΎΠ΅-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. НапримСр: List - это интСрфСйс, Π² Ρ‚ΠΎ врСмя How AbstractList Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ List'Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован How Π΅ΡΡ‚ΡŒ or ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² подклассС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ How ArrayList.
What Ρ‚Π°ΠΊΠΎΠ΅ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ?
ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово interface ΠΏΠ΅Ρ€Π΅Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ абстрактного класса дальшС, прСпятствуя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ любого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° or Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для всСх. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ or Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΠΎ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ являСтся ΠΊΡ€Π°ΠΉΠ½Π΅ эффСктивным ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ аспСктом Π² ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚Π°ΠΊ How ΠΎΠ½ обСспСчиваСт Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ интСрфСйса ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ позволяСт:
ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° интСрфСйсов:
  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС
  • Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π½ΠΎ-ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ абстракции ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, How ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅ΠΌ ΡƒΠ³ΠΎΠ΄Π½ΠΎ: JDBC, JPA, JTA, ΠΈ Ρ‚.Π΄.
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ рСализуСтся.
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ с динамичСским связываниСм - выявляСт an object ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ интСрфСйса, Π½Π΅ раскрывая Π΅Π³ΠΎ фактичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • Абстрактный ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ: ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ раздСлСния
Difference ΠΌΠ΅ΠΆΠ΄Ρƒ интСрфСйсом ΠΈ абстрактным классом:
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ прСдставляСт собой соглашСниС, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ΡΡ классы, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ интСрфСйс, How ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ этот интСрфСйс. Π­Ρ‚ΠΎ пустая ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° с объявлСниСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.
  • Абстрактный класс опрСдСляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±Ρ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ подклассу свойство ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π΅Π΄ΠΊΠΎΠ΅ or спСцифичноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для этого класса.
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‡Π»Π΅Π½Ρ‹ абстрактного класса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ с Π»ΡŽΠ±Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ видимости, Π² Ρ‚ΠΎ врСмя How всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйсов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ How public.
  • ΠŸΡ€ΠΈ наслСдовании ΠΎΡ‚ абстрактного класса, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π² Ρ‚ΠΎ врСмя How интСрфСйс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ интСрфСйс ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.
  • Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ абстрактного (or любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ) класса, Π² Ρ‚ΠΎ врСмя How интСрфСйс or класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… интСрфСйсов.
  • Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с Ρ‚Π΅ΠΌ ΠΆΠ΅ самым or ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ видимости, Π² Ρ‚ΠΎ врСмя How класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ видимости.
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ конструкторы, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Абстрактного класса.
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² интСрфСйсС Java ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа final. Абстрактный класс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ final.
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ интСрфСйса Π² Java ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа public ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Абстрактный класс Π² Java ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа, Ρ‚Π°ΠΊΠΈΠ΅ How private, protected ΠΈ Ρ‚.Π΄.
ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ:
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования codeΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнута благодаря Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ наслСдования or ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ использованию codeΠ° обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, Ρ‡Π΅ΠΌ наслСдованиС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ back-end класса Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ code, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ полагаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° front-end класс. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ - это ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° проСктирования для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… связСй Π² классах. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наслСдованиС Java or ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования codeΠ°. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ связи ΠΌΠ΅ΠΆΠ΄Ρƒ an objectΠΌΠΈ. НапримСр, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ стул. Π‘Ρ‚ΡƒΠ» ΠΈΠΌΠ΅Π΅Ρ‚ сидСньС. Π‘Ρ‚ΡƒΠ» ΠΈΠΌΠ΅Π΅Ρ‚ спинку. И ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Π½ΠΎΠΆΠ΅ΠΊ. Π€Ρ€Π°Π·Π° "ΠΈΠΌΠ΅Π΅Ρ‚" ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ, Π³Π΄Π΅ стул Π²Π»Π°Π΄Π΅Π΅Ρ‚ Ρ‡Π΅ΠΌ-Π»ΠΈΠ±ΠΎ, or How ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚. ИмСнно Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π° "Π˜ΠΌΠ΅Π΅Ρ‚" ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основой для составлСния ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.
ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:
β„– ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ (ΠΈΠΌΠ΅Ρ‚ΡŒ) НаслСдованиС (ΡΠ²Π»ΡΡ‚ΡŒΡΡ)
1 ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС codeΠ° ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС codeΠ°
2 ΠžΠ±ΡŠΠ΅ΠΊΡ‚ создаСтся Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ создаСтся динамичСски Π²ΠΎ врСмя компиляции
3 РСализация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π²ΠΎ врСмя выполнСния РСализация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π²ΠΎ врСмя выполнСния
4 Подкласс Π½Π΅ зависит ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, Ρ‡Ρ‚ΠΎ способствуСт ослаблСнию связСй (Π² частности, Π² интСрфСйсС управлСния) Подкласс зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, поэтому ΠΎΠ½ΠΈ ΠΏΠ»ΠΎΡ‚Π½ΠΎ связаны
5 Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Π² Π”ΠΎΠΌΠ΅ Π΅ΡΡ‚ΡŒ Ванная. НСкоррСктно Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π”ΠΎΠΌ - это Ванная. НаслСдованиС являСтся ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ. НапримСр: Π”ΠΎΠΌ это Π—Π΄Π°Π½ΠΈΠ΅. Но Π—Π΄Π°Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ являСтся Π”ΠΎΠΌΠΎΠΌ.
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ наслСдованиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ code. Если Π½Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠ° "ΡΠ²Π»ΡΡ‚ΡŒΡΡ" ΠΌΠ΅ΠΆΠ΄Ρƒ классами, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ композиция для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования codeΠ°.
Различия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ ΠΈ АгрСгациСй Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… an objectΠΎΠ²
Aggregation: An aggregation is a union in which one class belongs to a collection. He is part of the whole in a relationship where the part can exist without the whole. This is a weak relationship. There is no cyclic dependency. For example: order and product. Composition: A composition is a union in which one class belongs to a collection. It is part of the whole, where the part cannot exist without the whole. If the whole is deleted, then all parts will also be deleted. This relationship is stronger. An example would be: Polygon and points, ordering and ordering procedure.
Links:
Comments
  • Popular
  • New
  • Old
You must be signed in to leave a comment
This page doesn't have any comments yet