Привет! Меня зовут Алексей, и я хотел рассказать тебе о своем опыте создания классов Собака, Кот и Животное с использованием наследования. Я столкнулся с такой задачей на одном из своих учебных проектов, и хочу поделиться своим опытом с тобой.
Для начала я создал основной класс ⸺ Животное. В этом классе я определил два метода⁚ бежать и плыть. Принимаемый параметр ౼ длина препятствия. Внутри каждого метода я просто добавил вывод информации в консоль о том, что животное выполнело указанное действие. Например⁚
javascript
class Animal {
run(distance) {
console.log(`Животное пробежало ${distance} м.`);
}
swim(distance) {
console.log(`Животное проплыло ${distance} м.`);
}
}
Затем я создал классы Собака и Кот, которые наследовались от класса Животное. В каждом из этих классов я добавил методы, которые переопределяли родительские методы с учетом ограничений на действия для каждого вида животного.
В классе Собака я добавил ограничение на бег (500 м.) и плавание (10 м.). В классе Кот я добавил ограничение только на бег (200 м.), так как коты не умеют плавать. Например⁚
javascript
class Dog extends Animal {
run(distance) {
if (distance < 500) {
console.log(`Собака пробежала ${distance} м.`);
} else {
console.log(`Собака не может пробежать такое расстояние.`);
}
}
swim(distance) {
if (distance < 10) {
console.log(`Собака проплыла ${distance} м.`);
} else {
console.log(`Собака не может проплыть такое расстояние.`);
}
}
}
class Cat extends Animal {
run(distance) {
if (distance < 200) {
console.log(`Кот пробежал ${distance} м.`);
} else {
console.log(`Кот не может пробежать такое расстояние.`);
}
}
}
Теперь, когда у нас есть классы Собака и Кот с ограничениями на действия, мы можем создавать экземпляры этих классов и вызывать их методы. Например⁚
javascript
const dogBobik new Dog;
dogBobik.run(150);
dogBobik.swim(5);
const catMurzik new Cat;
catMurzik.run(250);
Результатом выполнения этих методов будет вывод информации в консоль, которую мы определили ранее в каждом из методов. Если действие невозможно выполнить из-за ограничений, это также будет отражено в выводе в консоль.
Дополнительно, как требуется в задаче, я добавил подсчет количества созданных котов, собак и животных. Для этого я использовал статические переменные в каждом из классов и инкрементировал их в конструкторе. Например⁚
javascript
class Animal {
static animalCount 0;
constructor {
Animal.animalCount ;
}
}
class Dog extends Animal {
static dogCount 0;
constructor {
super;
Dog.dogCount ;
}
}
class Cat extends Animal {
static catCount 0;
constructor {
super;
Cat.catCount ;
}
}
Теперь мы можем получить количество созданных животных с помощью статических переменных⁚
javascript
console.log(`Количество созданных собак⁚ ${Dog.dogCount}`);
console.log(`Количество созданных котов⁚ ${Cat.catCount}`);
console.log(`Количество созданных животных⁚ ${Animal.animalCount}`);
Таким образом, я создал классы Собака и Кот, наследующие от класса Животное, у которых есть ограничения на действия (бег и плавание). Я также добавил подсчет количества созданных котов, собак и животных с использованием статических переменных. Надеюсь, мой опыт будет полезен для тебя!