C# и ооп

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fox_malder, 23 Jan 2012.

  1. fox_malder

    fox_malder Active Member

    Joined:
    28 Nov 2008
    Messages:
    162
    Likes Received:
    131
    Reputations:
    73
    Добрые люди подскажите пожалуйста
    проблема в том что не могу получить переменную из одного класса , то есть наследую класс но не могу получить переменную

    Code:
    public class porter
        {
            
            private string land;
            private int lvl;
            private string race;
            public int attack_porter;
            public int health_porter;
            public string tmp;
            public int protection_porter;
            private int protection_land;
            public porter(string _race, int _lvl, string _land)
            {
                race = _race;
                lvl = _lvl;
                land = _land;
            }
            //начальные параметры носильщика, то есть первый уровень 
            public void porter_lvl()
            {
                if (race == "Рыцари")
                {
                    if (land == "Священная земля")
                    { protection_land = 25; }
                    else
                    { protection_land = 0; }
                    switch (lvl)
                    {
                        case 0: //1lvl
                            {
                                attack_porter = 12;
                                health_porter = 8;
                                protection_porter = 0 + protection_land;
                                tmp = "Атака: " + attack_porter + "\n" + "Защита: " + protection_porter + "\n" + "Здоровье: " + health_porter;
                                break;
                            }
    }
    }}
    }
    public class battle:porter
        {
            public battle()
            { 
               ataka = attack_porter;
            }
            public int ataka;
            public string tmp;
            public void bt()
            {
                tmp = "g" + ataka;
            }
        }
    
     
  2. thrust

    thrust Elder - Старейшина

    Joined:
    20 Jul 2011
    Messages:
    50
    Likes Received:
    41
    Reputations:
    31
    у тебя не определем базовый конструктор без параметров, передавай ему данные через battle() , либо опиши конструктор по умолчанию
     
    #2 thrust, 23 Jan 2012
    Last edited: 23 Jan 2012
  3. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    чтобы доступ к переменной можно было получить из класса-наследника она должна быть объявлена либо как protected либо как public
     
  4. fox_malder

    fox_malder Active Member

    Joined:
    28 Nov 2008
    Messages:
    162
    Likes Received:
    131
    Reputations:
    73
    так она и так public вот как конструктор сделать чтобы было значение то которое полученно было в классе у кого наследуется
     
  5. bestigor89

    bestigor89 New Member

    Joined:
    27 Jan 2011
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Вот примерчик я сделал
    PHP:
    private void button1_Click(object senderEventArgs e)
     { 
    ad dd = new ad(); this.Text dd.i.ToString(); 
    } }
     public class 
    f
     
    { public int i=10;
     } 
    public class 
    ad:
    {
     
    int test;
     public 
    ad()
     { 
    test i; } 
    public 
    int retInt ()
     { return 
    test; } }
    фишка заключаеться ты походу не вызываешь метод public void porter_lvl() или
    и значения переменной стоит по дефолту 0.
     
  6. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    кури в сторону свойств

    o_0 извращенец=)
     
    #6 cheater_man, 23 Jan 2012
    Last edited: 23 Jan 2012
  7. fox_malder

    fox_malder Active Member

    Joined:
    28 Nov 2008
    Messages:
    162
    Likes Received:
    131
    Reputations:
    73
    что то вообще про свойтсва врубиться не могу все испробывал уже
     
  8. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Непонятно: что ты хочешь сделать?
    Если присвоить какое-то значение по умолчанию, то
    конструктор по умолчанию, и в нем присваивай твоей переменной значение
    если просто переменную сделать, доступную как из родителя так и из потомка, то
    либо паблик (хуже) либо протектед (лучше) переменная
     
  9. fox_malder

    fox_malder Active Member

    Joined:
    28 Nov 2008
    Messages:
    162
    Likes Received:
    131
    Reputations:
    73
    класс battle подразумевает под собой в дальнейшем расчет боя воиск, по этому я хочу собрать в нем атаку,защиту и жизнь(значения приемрно 5 рода войск) и по алгоритму просчитать, но вот не могу дордуматься как получить все мне нужные переменные в этот класс
     
  10. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    тогда правильно писали: кури свойства, но в таком случае переменную объявлять как паблик нет необходимости