Skip to content

🧠 НаслСдованиС, инкапсуляция, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ


🧬 НаслСдованиС (Inheritance)

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс Π½Π° основС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ.

class Animal:
    def speak(self):
        print("Animal speaks")

class Dog(Animal):  # Dog наслСдуСт Animal
    def speak(self):
        print("Woof!")

dog = Dog()
dog.speak()  # β†’ Woof!

πŸ”Ή ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

β€’ Подкласс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ родитСля.

β€’ super() позволяСт Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ родитСля:

class Cat(Animal):
    def speak(self):
        super().speak()
        print("Meow!")

πŸ”’ Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ (Encapsulation)

Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ Python β€” Ρ‡Π΅Ρ€Π΅Π· соглашСния:

ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
public Π±Π΅Π· подчёркивания (self.x)
_protected с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ (self._x) β€” ΠΏΠΎ договорённости
__private с двумя подчёркиваниями (self.__x) β€” β€œΠ½Π°ΡΡ‚ΠΎΡΡ‰Π΅Π΅β€ сокрытиС
class User:
    def __init__(self, name):
        self.name = name           # public
        self._id = 123             # protected (Π½Π΅ Ρ‚Ρ€ΠΎΠ³Π°ΠΉ Π±Π΅Π· Π½ΡƒΠΆΠ΄Ρ‹)
        self.__password = "1234"   # private

    def get_password(self):
        return self.__password

🎭 ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ (Polymorphism)

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² β€” ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

class Bird:
    def make_sound(self):
        print("Tweet")

class Cow:
    def make_sound(self):
        print("Moo")

def animal_sound(animal):
    animal.make_sound()

animal_sound(Bird())  # Tweet
animal_sound(Cow())   # Moo