none
Наследование RRS feed

  • Вопрос

  • Приветствую.

    Есть абстрактный класс A. В нем объявлено поле. Есть класс наследник C. Каким образом в классе-наследнике можно присвоить полю значение поля, наследуемого из абстрактного класса? Для метода, который определяется в наследнике, все понятно. Там наследуемое значение видно. А как быть с полем? Вот код:

      public abstract class A
      {
        public int value = 32; //Поле
      }
    
      public class C : A
      {
        int a; //Каким образом этому полю можно присвоить значение, хранящееся в value?
        public void DoWork()
        {
          Console.WriteLine(value); //Тут поле value видно у родителя
        }
      }
    

    Спасибо.

    27 августа 2011 г. 8:24

Ответы

Все ответы

  • в class C добавьте конструктор: public C() { a = value; }

    • Помечено в качестве ответа Geokish 27 августа 2011 г. 9:22
    27 августа 2011 г. 8:52
  • Ясно. Значит через конструктор.

    Ну, или можно сделать value статической переменной. Насколько это размуно?

    Спасибо.

    27 августа 2011 г. 8:55
  • зависит от задачи. какая у вас задача?

    27 августа 2011 г. 9:12
  • У меня задача - в теории разобраться :) Как можно делать, а как нельзя :)

    Просто сейчас на практике изучаю различие между абстрактным классом и интерфейсом. Вот наследованием занимаюсь :)

    Спасибо за помощь.

    27 августа 2011 г. 9:22
  • Смотря чего вы хотите от переменной. Статическая переменная имеет одно значение для всех экземпляров класса. А, если не секрет, зачем вы ввели дополнительную переменную в классе С, ведь value доступно в экземплярах, да и значение по умолчанию должно присваиваться.

     

    27 августа 2011 г. 9:24
    Модератор
  • > У меня задача - в теории разобраться :)

    обязательно см. http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

    > различие между абстрактным классом и интерфейсом 

    в интерфейсе могут быть только определения методов и свойств. но нет реализации.
    в абстрактном классе часть методов и свойств обычно бывает реализована.

    27 августа 2011 г. 9:36
  • Дополнительную переменную ввел ради простого любопытства. Да, знаю, что value доступно в экземплярах. Тут я просто ради эксперимента всё это делаю. Вот хотел разобраться, как можно в классе-наследнике присвоить новой переменной значение из родителя.
    27 августа 2011 г. 9:47
  • >в интерфейсе могут быть только определения методов и свойств. но нет реализации.

    В интерфейсе ещё полей нет и модификаторов доступа, ибо всё считается public'ом. Это я так, для закрепления материала :)


    27 августа 2011 г. 9:50