Можно ли в классе-потомке переопределить метод с новыми параметрами? Добрый день!
Пытаюсь разобраться с тонкостями ООП. Простой пример.
Есть абстрактный класс Слой:public abstract class Layer: ICreatable
{
float[,] Heights { get; set; }
public abstract void Create();
}
Интерфейс, который он реализует, тоже прост:interface ICreatable
{
void Create();
}
Я хочу создать класс-потомок, который будет являться определенным типом слоя. Не понимаю, можно ли в нем реализацию метода Create() переписать как метод Create(int someParameter)? Если нет, то как лучше реализовать мою задумку. Я хочу, чтобы каждый тип слоя (класс-потомок) был ICreatable.
Чтобы было что-то типа такого:public class PerlinNoiseLayer : Layer
{
private float[,] _heights;
public override void Create(int resolution)
{
...
}
}

21 Авг 2019 в 06:59
207 +1
0
Ответы
1

Нет, в классе-потомке нельзя просто так переопределить метод с новыми параметрами. Это нарушит принцип подстановки Лисков, который является одним из принципов SOLID.

Однако, вы можете добавить новый метод с новыми параметрами в класс-потомок, сохраняя при этом реализацию метода Create() из родительского класса. Например:public class PerlinNoiseLayer : Layer
{
private float[,] _heights;

public void Create(int resolution)
{
...
}
public override void Create()
{
// вызов метода Create() из родительского класса с какими-то параметрами по умолчанию
}

}

Таким образом, у вас будет метод Create() с новыми параметрами и метод Create() из родительского класса. Вы сможете вызывать их в зависимости от вашей потребности.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир