0 / 0 / 0
Регистрация: 21.11.2017
Сообщений: 8

Наследование классов - изменить метод базового класса

27.04.2019, 20:05. Показов 3856. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В программе прописан родительский класс (BaseList) и два дочерних (ListChain и MasList). Хотелось бы прописать 2 метода сортировки Sort ( один для листа, второй для массива) так, чтобы метод метод сортировки для массива находился в родительском классе и при его вызове ,не найдя данный метод в дочернем, был использован метод Sort родительского класса, и второй метод Sort для листа был прописан в дочернем классе. Как правильно оформить данные методы? Сам метод Sort писать не нужно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2019, 20:05
Ответы с готовыми решениями:

Наследование классов: доступность базового класса
Ребят подскажите пожалуйста что не так с наследованием, т.к. компилятор ругается на доступность базового класса хотя везде public using...

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

Наследование:переменные базового класса
В общем по книге Г.Шилдт делал пример из книги и почему то выдаёт много ошибок. using System; using System.Collections.Generic; ...

6
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,869
27.04.2019, 20:23
Цитата Сообщение от Adamantoz Посмотреть сообщение
В программе прописан родительский класс (BaseList)
Если родительский класс имеет public Method то все дочерние классы будут иметь этот метод.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
27.04.2019, 22:00
Цитата Сообщение от Adamantoz Посмотреть сообщение
Как правильно оформить данные методы? Сам метод Sort писать не нужно.
Используете виртуальный virtual метод - в производном классе его можно переопределить с ключевым словом override.
Или скрывает базовый метод производным с ключевым словом new.

Для переопределённого метода из объекта производного типа доступа к базовому не будет. Для скрытого можно получить доступ к базовому через приведение к базовому типу. Внутри производного класса базовые методы доступны через base.

В обоих случаях необходимо чтобы сигнатуры методов в базовом классе и производных совпадали.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.04.2019, 08:24
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для переопределённого метода из объекта производного типа доступа к базовому не будет.
А как же base?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для скрытого можно получить доступ к базовому через приведение к базовому типу.
Или через тот же base.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
28.04.2019, 13:22
Цитата Сообщение от kolorotur Посмотреть сообщение
А как же base?
Я же написал, что из кода класса может быть доступ: Внутри производного класса базовые методы доступны через base.
Но если есть ОБЪЕКТ производного класса, разве можно получить доступ к переопределенному методу базового класса?

Пример для объяснения моей мысли
C#
1
2
3
4
5
6
7
8
9
10
    class BaseClacc
    {
        public virtual int MetodVirt() => 0;
        public string Metod() => "Ноль";
    }
    class  DerivedClacc : BaseClacc
    {
        public override int MetodVirt() => 10;
        public new string Metod() => "Десять";
    }
C#
1
2
3
4
5
    DerivedClacc d = new DerivedClacc();
    BaseClacc b = d;
 
    Console.WriteLine($"Методы производного класса: MetodVirt={d.MetodVirt()}, Metod={d.Metod()}");
    Console.WriteLine($"Методы базового класса: MetodVirt={b.MetodVirt()}, Metod={b.Metod()}");
КонсольМетоды производного класса: MetodVirt=10, Metod=Десять
Методы базового класса: MetodVirt=10, Metod=Ноль
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.04.2019, 14:10
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но если есть ОБЪЕКТ производного класса, разве можно получить доступ к переопределенному методу базового класса?
Конечно:
C#
1
public override int MetodVirt() => 10 + base.MetodVirt(); // 10 + 0
Вызывается реализация базового класса из объекта производного класса.
Или вы что-то другое подразумевали под объектом производного класса?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
28.04.2019, 14:17
Цитата Сообщение от kolorotur Посмотреть сообщение
Вызывается реализация базового класса из объекта производного класса.
Или вы что-то другое подразумевали под объектом производного класса?
Да.
В коде производного класса, конечно, к базовому методу есть доступ.

Но я говорю о другом.
О доступе к базовым методам в экземплярах производного класса.
Если метод скрыт (new), то приведя производный тип к базовому можно получить доступ к базовому методу.
С переопределенным (override) методом так не выйдет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2019, 14:17
Помогаю со студенческими работами здесь

Вызвать метод производного класса из базового класса
namespace patterns { public class BaseClass { public virtual void Action() { ...

Занести из файла объекты производных классов в массив объектов базового класса
Здравствуйте. Что в этом коде изменить, чтобы объекты производных классов заносились из файла? using System; namespace...

Вызывается метод из базового класса
Имеется 2 класса: В 1 классе Data имеются такие методы: private string GetUpdateQuerryString() { string tmp...

Возможно ли некоторые публичные члены базового класса закрыть для производных классов?
Т.е. чтобы некоторые члены были доступны из экземпляра базового класса, но чтобы их невозможно было вызвать из экземпляров производных?

Сортировка: Как отсортировать объекты конечных классов с учетом промежуточного базового класса?
Есть один базовый класс (ClassMain), который наследует три класса (N1 N2 N3), каждый из трех наследников наследует еще по два (N11, N12,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru