0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 43
1

Как изменить параметры базового класса в потомке

23.09.2014, 15:31. Показов 4477. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, как изменить параметры базового класса в классе потомок
Пример
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Class1
    {
        protected double i;
        public Class1() { }
        public void Вывод()
        {
            Console.WriteLine(i);
        }
    }
    class A : Class1
    {
        public A() : base() { }
        public void AA()
        {
            i = 3;
        }
    }
Не могу найти ошибку, параметр i после выполнения действий
class Program
C#
1
2
3
4
5
6
7
8
9
   {
        static void Main(string[] args)
        {
            Class1 x = new Class1();
            A y = new A();
            y.AA();
            x.Вывод();
        }
    }
не меняется, хотя должен же
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2014, 15:31
Ответы с готовыми решениями:

Как убрать свойства базового класса в классе-потомке?
пишу свой контрол для winforms в моем контроле не будет столько свойств как в контроле usercontrol...

Написать функцию вывода, получающую параметры базового класса по ссылке и демонстрирующую виртуальный вызов
Скажите, как можно ?

Реализовать функцию вывода, получающую параметры базового класса по ссылке и демонстрирующую виртуальный вызов
Есть базовый класс Body и два наследуемых Ball и Parallelepiped. У меня сделаны методы ввода и...

Наследование классов - изменить метод базового класса
В программе прописан родительский класс (BaseList) и два дочерних (ListChain и MasList). Хотелось...

5
1143 / 872 / 505
Регистрация: 09.04.2014
Сообщений: 2,054
23.09.2014, 15:38 2
Цитата Сообщение от MashaM20 Посмотреть сообщение
не меняется, хотя должен же
y.Вывод(); возвратит вам 3

Добавлено через 55 секунд
Вы изменяете значение в объекте у, а выводите значение из х
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
23.09.2014, 15:56 3
Лучший ответ Сообщение было отмечено MashaM20 как решение

Решение

nedel, у вас два РАЗНЫХ объекта - х и у.
можно написать так:
C#
1
2
3
            A y = new A();
            y.AA(); //изменяем поле базового класса
            y.Вывод();
1
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 43
23.09.2014, 16:07  [ТС] 4
а как тогда сделать что бы именно i из Class изменилась при изменении в классе потомок?
0
1143 / 872 / 505
Регистрация: 09.04.2014
Сообщений: 2,054
23.09.2014, 16:25 5
Цитата Сообщение от Learx Посмотреть сообщение
nedel, у вас два РАЗНЫХ объекта - х и у.
это не у меня, это у автора
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
23.09.2014, 16:50 6
MashaM20, создавая A y = new A(); мы создаем объект, который выглядит как матрешка - серединка из Class1 и внешняя часть - это class A. И вы можете изменять поля внутренней части-базового класса в объекте класса-наследника, как свои собственные. вот смысл наследования.
вы же пытаетесь создать объект базового класса и изменить его при помощи совершенно другого объекта, а это уже бессмыслица.
1
23.09.2014, 16:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2014, 16:50
Помогаю со студенческими работами здесь

В приведенном коде base может изменить значения членов базового класса в самом базовом классе
using System; class a { public int x; public a() { x = 122; } }...

Как компилятор различает две перегрузки метода абстрактного класса в инстанцированном классе потомке?
using System; namespace ConsoleApp1 { public abstract class cl<T> { public abstract void...

Как сложить объект базового класса с объектом производного(наследуемого класса)
Как умножить объект базового класса с объектом производного(наследуемого класса): ozenka - объект...

Как обратиться из конструктора базового абстрактного класса к свойству-массиву класса наследника
Добрый день. Подскажите как обратиться из конструктора базового абстрактного класса к...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru