StudyCode
oop

Классы и объекты

Создание классов, конструкторы, поля и методы

Войди, чтобы отслеживать прогресс
Показать языки:
JSJavaScript
class Animal {
  #name; // приватное поле

  constructor(name, sound) {
    this.#name = name;
    this.sound = sound;
  }

  speak() {
    return `${this.#name} говорит ${this.sound}`;
  }

  get name() { return this.#name; }
}

const dog = new Animal("Собака", "Гав");
console.log(dog.speak());
PYPython
class Animal:
    def __init__(self, name, sound):
        self.__name = name  # приватное
        self.sound = sound

    def speak(self):
        return f"{self.__name} говорит {self.sound}"

    @property
    def name(self):
        return self.__name

dog = Animal("Собака", "Гав")
print(dog.speak())
C#C#
class Animal
{
    private string _name;

    public string Sound { get; set; }

    public Animal(string name, string sound)
    {
        _name = name;
        Sound = sound;
    }

    public string Speak()
    {
        return $"{_name} говорит {Sound}";
    }

    public string Name => _name;
}

var dog = new Animal("Собака", "Гав");
Console.WriteLine(dog.Speak());
C++C++
#include <string>
using namespace std;

class Animal {
private:
    string _name;

public:
    string sound;

    Animal(string name, string sound)
        : _name(name), sound(sound) {}

    string speak() {
        return _name + " говорит " + sound;
    }

    string getName() { return _name; }
};

Animal dog("Собака", "Гав");
cout << dog.speak();
Пояснение

Все четыре языка поддерживают ООП. Python использует self явно в каждом методе. C# и C++ разграничивают public/private явно. C# поддерживает свойства (get/set), остальные — геттеры/сеттеры.