23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
1
.NET 4.x

Постоянный вызов метода основного класса в наследованном классе

21.12.2012, 11:30. Показов 1057. Ответов 2
Метки нет (Все метки)

Всем привет! Вопрос про наследование. Можно сделать так, чтобы при вызове в производном классе переопределённого метода (который в базовом объявлен как абстрактный) всегда вызывался один из методов в базовом классе (всегда один и тот же)? Чтобы пояснить вопрос, вот структура классов:

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
39
40
41
42
43
44
45
46
    public abstract class BaseClass
    {
        public BaseClass(SomeObject obj) {/* конструктор базового класса*/ }
 
        protected void PrepareStart()
        {
            // этот метод всегда нужно вызывать до метода Start
        }
 
        public abstract void Start();
    }
 
    public class Class1 : BaseClass
    {
        public Class1(SomeObject obj) : base(obj) {/* конструктор*/ }
 
        public override void Start()
        {
            base.PrepareStart(); // можно этот вызов как-то сделать в одном экземпляре?
            // основная работа
        }
    }
 
    public class Class2 : BaseClass
    {
        public Class2(SomeObject obj) : base(obj) {/* конструктор*/ }
 
        public override void Start()
        {
            base.PrepareStart(); // можно этот вызов как-то сделать в одном экземпляре?
            // основная работа
        }
    }
 
    public class Class3 : BaseClass
    {
        public Class3(SomeObject obj) : base(obj) {/* конструктор*/ }
 
        public override void Start()
        {
            base.PrepareStart(); // можно этот вызов как-то сделать в одном экземпляре?
            // основная работа
        }
    }
 
    // и ещё много наследованных классов
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2012, 11:30
Ответы с готовыми решениями:

Вызов статического метода класса в другом классе
Как вызвать статический метод из одного класса в другом? вот этот код не работает class A{...

Вызов метода одного класса в другом классе
Привет всем Когда запускаю, то в методе GetOut() вместо имени человека выводится цифра 1...

Как в наследованном классе вывести все строки главного класса?
Здравствуйте! Есть класс class organizaciya { public static ArrayList...

Вызов метода в классе формы из класса другого проекта
Есть проект Project1 и Project2 - оба ClassLibrary. В Project1 происходит вызов форми из Project2...

2
711 / 678 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
21.12.2012, 11:45 2
NVI

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
39
40
41
42
43
        public abstract class BaseClass
        {
            public BaseClass(object obj) {/* конструктор базового класса*/  }
 
            protected void PrepareStart()
            {
                // этот метод всегда нужно вызывать до метода Start
            }
 
            public void Start()
            {
                PrepareStart();
                CoreStart();
            }
            protected abstract void CoreStart();
        }
 
        public class Class1 : BaseClass
        {
            public Class1(object obj) : base(obj) {}
 
            protected override void CoreStart()
            {
            }
        }
 
        public class Class2 : BaseClass
        {
            public Class2(object obj) : base(obj) {}
 
            protected override void CoreStart()
            {
            }
        }
 
        public class Class3 : BaseClass
        {
            public Class3(object obj) : base(obj) { }
 
            protected override void CoreStart()
            {
            }
        }
1
23 / 23 / 3
Регистрация: 24.02.2010
Сообщений: 105
21.12.2012, 11:55  [ТС] 3
Цитата Сообщение от Tessen Посмотреть сообщение
NVI
Большое спасибо! Это как раз то, что нужно. Я подозревал, что есть какое-то более простое и изящное решение, но сам не додумался. А про NVI даже и не знал, обязательно почитаю подробнее.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2012, 11:55

В производном классе вызов приватного метода базового класса
Добрый вечер. Помогите понять одну вещь. Имеется такое наследование: class test1 { public: ...

Вызов метода базового класса игнорируя переопределенный метод в производном классе
Как вызвать метод базового класса игнорируя переопределенный метод в производном классе. PS...

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

вызов из основного класса
как вызвать переменную из стандартного идиотЦкого класса? public partial class MainWindow : Window...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.