Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.09.2014
Сообщений: 13
1

Наследование функций и свойств. Немного не пойму

01.08.2015, 16:07. Показов 1099. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    
class Point {
    private $y = 0;
    public function getY() {
     return $this->y;
    }
}   
 
class Child extends Point {
    
}
    
$obj = new Child();
echo $obj->getY();
Немного не пойму: почему $obj->getY() выводит значение 0? Ведь $y при наследовании же не передался, т.к. private, а значит $this->y не должно существовать у дочернего класса? Или же эта функция вызывается с родительского класса и смотрит на родительский параметр? Или вот: функция передается дочернему классу, но при вызове видит, что свойство private, поэтому понимает, что в дочернем классе это свойство быть не может, и ищет его в родительском (что странно, почему он начинает искать его в родительском), и, если находит, то берет его. А если был бы public, то тогда бы y передался в дочерний и брался бы оттуда, там бы можно было его переопределить. Так как мне понимать это? Я запутался.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2015, 16:07
Ответы с готовыми решениями:

Немного изменил код программы и она перестала работать. Не пойму почему.
Программа работала, но нужно было вынести вывод суммы в main( до этого выводилась в sum). Для этого...

Наследование свойств
Хотелось бы описать 1 функцию в базовом классе типа: void func(){ procedure( a ); } , где "a"...

Наследование свойств от Object
Может сможет кто помочь? Хочу задать для Object свойство propertyName (это переменная, может...

Наследование свойств компонентов
возник небольшой вопросик (чистое любопытство) такого плана: допустим возьмём любой компонент...

4
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
01.08.2015, 17:15 2
Приватное поле доступно, потому что метод находится в том же классе, что и данное свойство
0
0 / 0 / 0
Регистрация: 02.09.2014
Сообщений: 13
01.08.2015, 17:29  [ТС] 3
А ведь метод-то копируется в Child, нет? Он же оттуда вызывается, а не из Point?
0
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
01.08.2015, 17:39 4
Лучший ответ Сообщение было отмечено LeO_on как решение

Решение

Если бы этот метод был в наследуемом классе, то тогда доступ к полю мы не получили.
При наследовании ничего не копируется, а расширяется с помощью другого класса

Добавлено через 2 минуты
PHP
1
2
3
4
5
6
7
class Point {
    private $y = 0;
    public function getY() {
       echo "Вызов метода ".__METHOD__." в классе ". __CLASS__;
       return $this->y;
    }
}
1
0 / 0 / 0
Регистрация: 02.09.2014
Сообщений: 13
01.08.2015, 17:46  [ТС] 5
Ох, я перечитал про extend, + Ваше сообщение, теперь все понятно, спасибо.
0
01.08.2015, 17:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2015, 17:46
Помогаю со студенческими работами здесь

Наследование базовых свойств usercontrol
Всем доброго дня суток! Был создан новый usercontrol, наследуемый от minthcalendar. Однако...

Темы. Наследование свойств элементов
В теме указываем стиль для кнопок: <style name="AppThemeDark"...

Немного не понимаю как правильно сделать наследование
Вот например, есть структура Point(точка). Если надо сделать структуру Round(круг), то в этом...

Наследование свойств и методов классов в Delphi
Не могу решить проблему с наследованием свойств и методов. Задача: Разработать консольное...


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

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