Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
8 / 9 / 4
Регистрация: 30.11.2016
Сообщений: 108

Наследование и вызов метода

22.04.2018, 16:42. Показов 4284. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть базовый класс и класс потомок.
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
34
35
36
37
38
class a
{
protected int a;
protected int b;
public a()
{
a=0; b = 0;
}
public virtual void show()
{
//chto-to tut est
}
}
class b:a
{
int x,y;
public b()
{
x=0; y = 0;
}
public override show()
{
base.show();
//chto-to tut est;
}
public void test(){//chto-to tut est}
}
class Program
    {
        static void Main(string[] args)
        {
            a test = new a();
            test = new b();
            test.Show();
            //как здесь вызвать метод тест из класса б
 
        }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2018, 16:42
Ответы с готовыми решениями:

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...

Вызов методов классов друг у друга (вызов метода из другого класса)
Есть несколько классов, которые могут вызывать методы (функции) друг у друга. Логика: класс1 имеет метод А, класс2 имеет метод Б, класс1...

Вызов переменной метода A из метода В
Добрый день. Подскажите как происходит вызов Например даны два класс А и В, в каждом классе есть Метод 1 и метод 2 class A { void...

6
29 / 31 / 27
Регистрация: 15.11.2017
Сообщений: 121
22.04.2018, 17:02
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
using System;
 
namespace Program
{
  class A
  {
    public virtual void Show()
      => Console.WriteLine("A Show()");
  }
 
  sealed class B : A
  {
    public override void Show() 
      => base.Show();
 
    public void Test()
      => Console.WriteLine("B Test()");
  }
 
  sealed class MainClass
  {
    static void Main()
    {
      var b = new B();
 
      b.Test();
 
      Console.ReadKey();
    }
  }
}
0
8 / 9 / 4
Регистрация: 30.11.2016
Сообщений: 108
22.04.2018, 17:20  [ТС]
VIAZNIKOVGM Это не совсем то что нужно
0
29 / 31 / 27
Регистрация: 15.11.2017
Сообщений: 121
22.04.2018, 17:31
Dragon3005,
C#
1
2
3
4
5
6
7
var a = new A();
a = new B();
 
if (a as B != null)
{
  ((B) a).Test();
}
1
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
22.04.2018, 17:32
Dragon3005, вы хотите вызвать метод дочернего класса через ссылку на родительский класс?
Напрямую это невозможно.
Но если исхитриться, то можно через безопасный даункаст:
C#
1
2
3
4
5
         A test = new A();
         test = new B();
         test.Show();
         //как здесь вызвать метод тест из класса б
         (test as B)?.test();
А вообще, как только в программе появляются даункасты, это признак плохой архитектуры.
1
8 / 9 / 4
Регистрация: 30.11.2016
Сообщений: 108
22.04.2018, 18:28  [ТС]
Fleder, а как тогда? Не каждый же метод писать в базовом классе(пустой)
0
 Аватар для Fleder
263 / 224 / 108
Регистрация: 09.12.2015
Сообщений: 652
22.04.2018, 18:44
Цитата Сообщение от Dragon3005 Посмотреть сообщение
а как тогда? Не каждый же метод писать в базовом классе(пустой)
Я не знаю вашей архитектуры или того, что вы хотите запрограммировать.
Но моё личное мнение - базовые классы надо применять только при использовании генерализации.

То есть, создаём множество классов, которые удовлетворяют наши потребности.
Каждый класс - сам по себе и ни от кого не наследуется.
Чтобы их можно было единообразно обрабатывать - реализуем ими какие-нибудь интерфейсы.

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

Наследование метода
Приветствую, формучане. Вообщем, имеется класс. Class A { protected first_method () { } other_method()

Запрет на наследование метода
Всем привет. Помогите, кто знает. Нужно сделать так. 1. Создать класс А, в котором все методы public 2. Создать класс Б,...

Запрет наследование абстрактного метода
Абстрактный класс ValueType наследует от Object-a Только 3 метода, или наследует все но видны 3 только. Как ValueType унаследовал только...

Наследование и upcast параметров метода
class A { public virtual void M(int a) { Console.WriteLine("A.M(int a)"); } } ...

Наследование статического метода в интерфейсе
знаю, это самые азы, но мне раньше просто не было необходимости писать интерфейсы (как то без них обходился) и вот сейчас возник такой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru