2015-05-06 1 views
1

У меня есть список классов в классе, который наследует другой класс. Я хотел бы иметь возможность доступа к родительским переменным без использования ссылок (чтобы сделать чтение более понятным).Могу ли я сделать родительские переменные доступными без ссылки?

public class MyCode : OtherCode 
    { 
     public string label; 
     public MyCode() 
     { 
      label = "somestring"; 
      colour = 5; 
      Console.WriteLine("colour is: " + colour); // this is ok 
      List<particle> parts = new List<particle>(); 
      parts.Add(new particle()); 
     } 

     public class particle //I'd like this class to have access to the parent variables 
     { 
      public particle() 
      { 
       Console.WriteLine("The colour is: " + colour); // can this be accessed without using a parent reference? 
       //Console.WriteLine("The label is: " + label); // unaccessable 
       Console.ReadLine(); 
      } 
     } 
    } 

    public class OtherCode 
    { 
     public int colour = 1; 
     public OtherCode() 
     { 
      //I didn't do it 
     } 
    } 

Можно ли наследовать родительские переменные таким образом, чтобы я мог просто ввести их «как есть» в методах частиц?

Извинения за запутанный пример, я думаю, что я расшарил, подумав, что могу использовать наследование в этом случае. Что мне интересно, возможно ли, чтобы вложенный класс (частица) имел доступ к ярлыку и цвету без передавая ссылку на него по строительству и используя Parent.variable повсюду?

+0

'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'или' конечно, чашка была бы такой вкусной) – Sayse

+1

Вы используете наследование неправильно, как упоминания @Sayse (наследование означает «есть-а», а кофе уверен, что ад - это не чашка), и ваш вопрос неясен. Объясните, что вы хотели бы видеть, вместо того, чтобы «сделать более читаемым». – CodeCaster

+0

Извините, но я думаю, что у вас есть что-то в обратном направлении. «Кофе: Кубок» - это не способ сказать, что кофе без чашки не может быть. Потому что есть кофе без чашки. То, как вы заявляете это, говорит, что кофе - это особый вид чашки. Что это не так. Cappucino - это кофе, а кружка - это кубок, который переводится в «Cappucion: Coffee» и «Mug: Cup». Итак, я думаю, вы должны исправить это и прочитать о ООП в целом, а затем ответ на ваш вопрос придет к вам :) –

ответ

1

Вот мое правило, чтобы определить, когда использовать наследование.

Попробуйте описать проблему и определить глагол в своем предложении.

Например, что является правильным предложением здесь?

Таким образом, вы не можете использовать наследование из-за лени или чего-то еще. Каждая концепция имеет прецеденты и не включает переменные/свойства declarations, а не цель inheritance.

+0

Имеет смысл, я надеялся избежать необходимости проходить в родительском доме и иметь Parent.var везде. – Catnaps909

+0

@ Catnaps909 Я считаю, вы должны создать новую парадигму программирования! ООП не будет работать так, как вам нравится: P –

+0

ха-ха, да, я все еще учусь. Я просто нашел его нечитаемым, чтобы иметь родителя. перед всем, как было интересно, был ли более простой способ. – Catnaps909