За последние 24 часа нас посетили 30373 программиста и 1753 робота. Сейчас ищут 842 программиста ...

вопрос по ооп

Тема в разделе "PHP для новичков", создана пользователем riaron, 8 апр 2015.

  1. riaron

    riaron Активный пользователь

    С нами с:
    1 окт 2014
    Сообщения:
    247
    Симпатии:
    4
    Почему результат получается a: 30, b: 10 ?Если последняя операция перед выводом $obj->changeValue(10);
    Код (PHP):
    1. class ClassOne {
    2.   protected $a = 10;
    3.  
    4.   public function changeValue($b) {
    5.     $this->a = $b;
    6.   }
    7. }
    8.  
    9. class ClassTwo extends ClassOne {
    10.  
    11.   protected $b = 10;
    12.  
    13.   public function changeValue($b) {
    14.     $this->b = 10;
    15.     parent::changeValue($this->a + $this->b);
    16.   }
    17.  
    18.   public function displayValues() {
    19.     print "a: {$this->a}, b: {$this->b}\n";
    20.   }
    21. }
    22.  
    23. $obj = new ClassTwo();
    24.  
    25. $obj->changeValue(20);
    26. $obj->changeValue(10);
    27.  
    28. $obj->displayValues();
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    наверное поэтому
     
  3. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Код (PHP):
    1. parent::changeValue($this->a + $this->b);
    каждый вызов метода увеличивает значение переменной класса $this->a на 10.

    Добавлено спустя 13 минут 50 секунд:
    и передавать что 200 что 20, результат будет таким же. Вы локальный параметр $b не используете нигде.
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Чтобы не тыкать пальцем в небо, ТС должен написать, какой результат он ожидал получить