powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование и интерфейсы.
25 сообщений из 384, страница 2 из 16
Наследование и интерфейсы.
    #39720471
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy* наследует реализацию iParentable

Получается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться.

Потому как фича языка "new" тут не работает.

Что выглядит как баг.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720472
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться.
Такая уж штука, это программирование - надо много чего знать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720473
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

что тебе надо, никто пока не понял, на фига тебе вообще наследник, а не просто другая реализация интерфейса, или декоратор, или композиция?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720475
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАгнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться.
Такая уж штука, это программирование - надо много чего знать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720476
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Про new я не понял твой вопрос, а про то что надо знать знать всю цепочку наследования и да и нет одновременно.
Ведь в памяти это как бы один объект который приводится as или (НовыйТип ) в любой другой из цепочки наследования.
Все логично.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720479
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Можно попробовать такую дорожную карту:
- в моделировании обойтись без интерфейсов.
- интерфейс добавить после обоснования необходимости оного. Например, для сериализации... Добавить "сбоку"))) новое поведение.
Удачи!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720482
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАгнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться.
Такая уж штука, это программирование - надо много чего знать.

Я про Low Coupling , при чем тут "программирование - такая штука"?

Я наследуюсь от класса, перекрываю метод с new - и думаю, что этого достаточно.

Компилятор пропустит, окей.

Но в рантайме, при приведении к интерфейсу - вызовется метод базового класса.

Мне надо либо:
1. Указать явно, что наследник реализует требуемый интерфейс, что несколько "избыточно", как по мне.
2. Либо использовать virtual в базовом классе, который может быть не моим.
3. Либо привести объект к типу-наследнику, но это вообще бред.

Какие еще варианты? Нету.

Получается, что наследник "как бы реализует интерфейс, но как бы не до конца".

Мутная тема.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720486
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомМутная тема.
Тебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно".

Действительно мутная тема
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720487
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомКомпилятор пропустит, окей.нет под рукой студии. Если вообще молчит, тогда согласен с мутной.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720488
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухТебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно".

"Зарекалась свинья в грязи валяться".

Есть интерфейс, объявляет 15 методов.

Есть класс А , который их реализует

И мне нужен класс В , который будет вести себя как класс А , за исключением одного метода.

Мне скопировать всю реализацию из А в В ?

Ты нифига о контексте не знаешь, но советы даёшь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720497
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомДмитрий МухТебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно".

"Зарекалась свинья в грязи валяться".

Есть интерфейс, объявляет 15 методов.

Есть класс А , который их реализует

И мне нужен класс В , который будет вести себя как класс А , за исключением одного метода.

Мне скопировать всю реализацию из А в В ?

Ты нифига о контексте не знаешь, но советы даёшь.
Декоратор тебе в помощь, дружок.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720499
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
interface ILamb
{
    void A();
    void B();
}

class LambOrdinary : ILamb
{
    public void A()
    {
        Console.WriteLine("Ordinary A");
    }

    public void B()
    {
        Console.WriteLine("Ordinary B");
    }
}

class LambOverboard : ILamb
{
    private readonly LambOrdinary lamb = new LambOrdinary();

    public void A()
    {
        lamb.A();
    }

    public void B()
    {
        Console.WriteLine("Overboard B");
    }
}
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720500
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

ну или сделай метод виртуальным уже и оверрайди как тебе угодно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720502
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Это костыль. Который приходиться юзать из-за какого-то бага в архитектуре языка.

И не дружок ты мне, **** ******. )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720504
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы, гы, вот ты сейчас прям так обидно подколол, я аж заплакал.
Под стол небось упал, смеясь как чайка?

Ладно, раз костыль, то ищи решение сам, а я понаблюдаю.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720505
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

и не смей использовать декоратор, **** ******!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720515
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
interface ILamb
{
    void A();
    void B();
}

class LambOrdinary : ILamb
{
    public void A() => DoA();
    public void B() => DoB();

    protected virtual void DoA() => Console.WriteLine("Ordinary A");
    protected virtual void DoB() => Console.WriteLine("Ordinary B");
}

class LambOverboard : LambOrdinary
{
    protected override void DoB() => Console.WriteLine("Overboard B");
}
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720516
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык все интрефейсы в байткоде есть абстрактные типы которых скрыли конструктор ( еслимненеизменяетпамять)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720566
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомИ мне нужен класс В , который будет вести себя как класс А , за исключением одного метода.

Нет. Это тебе не нужно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720567
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАгнец за бортомИ мне нужен класс В , который будет вести себя как класс А , за исключением одного метода.

Нет. Это тебе не нужно.
)) тоже верно.
У него чисто теоретический вопрос был.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720571
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомAntonariy* наследует реализацию iParentable

Получается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться. А ты как думал? Можно наследовать незнамо что, наугад, закрыв глаза? Или наследовать лишь то, что имеет единственный метод MakeFuckingGood?

Агнец за бортомНо в рантайме, при приведении к интерфейсу - вызовется метод базового класса.Ты явно указываешь, что нужно вызвать метод интерфейса, этот метод реализован в базовом классе, он и вызывается. Если тебе нужен переопределенный метод класса-наследника, приводишь к типу наследника. С какой стати компилятор должен угадывать твои мысли, мол дергая метод наследника ты НА САМОМ ДЕЛЕ хочешь дернуть реализацию интерфейса?

Агнец за бортомМутная тема.Мутная она лишь в том смысле, что ты сам не знаешь, какой метод тебе нужен - базовый или переопределенный.

Агнец за бортомИ мне нужен класс В, который будет вести себя как класс А, за исключением одного метода.
Так все-таки знаешь - переопределенный. Но с какого-то перепугу считаешь, что компилятор должен при обращении к интерфейсу выдавать тебе переопределенный метод. А с какого? Он к интерфейсу не относится от слова совсем. Это чисто метод класса-наследника, он лишь название имеет такое же, как метод интерфейса.

Агнец за бортомКоторый приходиться юзать из-за какого-то бага в архитектуре языка.Это баг не языка, а твоего понимания языка.

А тебе нужно следующее:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
using System.Diagnostics;

static class Module1
{
    public static void Main()
    {
        I1 c = new C2();
        c.Test();
    }
}

public interface I1
{
    void Test();
}

public class C1 : I1
{
    public virtual void Test() => Debug.Print("qwe");
}

public class C2 : C1
{
    public override void Test() => Debug.Print("sdf");

    public void Test2() => Debug.Print("fgh");
    
}

При наличии virtual/override С2.Test связывается с интерфейсом.
При наличии new С2.Test независим от интерфейса, это такой же самостоятельный метод класса как Test2.

Запомни это и не возводи напраслину на язык.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720574
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вкратце:

Переопределение методов поддерживает наследование.
Перегрузка методов не поддерживает наследование.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720577
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соответственно тут:

авторЕсли тебе нужен переопределенный перегруженный метод класса-наследника
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720578
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И далее тоже налажал, под переопределенными перегруженные подразумевал.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720580
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123)) тоже верно.
У него чисто теоретический вопрос был.

Да не нужно это ему.
...
Рейтинг: 0 / 0
25 сообщений из 384, страница 2 из 16
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование и интерфейсы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]