Вызов родительский функций в ООП

linux2000

Новичок
Вызов родительский функций в ООП

Возник вопрос как правильно написать вызов функции родительского класса:
Есть класс:

PHP:
class A
{
	function kvadrat($v)
	{
		return pow($v,2);
	}
}
От него наследуем другой класс, у меня возникло 2 варианта реализации:

1. Вариант.
PHP:
class B extends A
{
        public $res;
	function __construct($var)
	{
		$this->res = parent::kvadrat($var);
	}
}
2 вариант:
PHP:
class B extends A
{
        public $res;
	function __construct($var)
	{
		$this->res = $this->kvadrat($var);
	}
}
Как правильно писать вызов функции родительского класса $this->res = parent::kvadrat($var); или $this->res = $this->kvadrat($var);

?
 

AmdY

Пью пиво
Команда форума
berkut а так ;)
PHP:
class B extends A 
{ 
    public $res; 
    function kvadrat($v) 
    { 
        return ' : ) '; 
    } 
    function __construct($var) 
    { 
        echo $this->kvadrat($var); 
        echo '<br/>'.parent::kvadrat($var);
    } 
}
 

berkut

Новичок
AmdY
и чО? если он в Б переопределил, то _скорее всего_ ему в _Б_ нужен переопределённый метод, логично? поэтому я и написал
всё зависит от еальных нужд, но this в данном примере малясь логичнее
 

AmdY

Пью пиво
Команда форума
получается, если нужно вызвать метод родительского класса, то parrent:: чуток правильнее
 

berkut

Новичок
мля.. да.. название темы-то я упустил, я только по примеру... ну ламо я, шож, зато у меня писька большая
 

AmdY

Пью пиво
Команда форума
:(, и к чему это.
я сам с первого захода подумал про $this, ведь это естественно. А вот когда прочитал "правильнее", то подумал что не всё так просто. Вспомнил конструктор своего экшина, где постоянно забываю вызвать родительский конструктор, когда перегружаю.
 

Beavis

Banned
[offtop]
щас придет HraKK и скажет что это не ООП ))
Это не ООП, но подозреваю это часть кода который возможно написан на ООП.
[/offtop]
 

Sluggard

Новичок
Beavis
Это ООП, только потому что присутствует наследование. Хватит нести пургу. По своей безграммотности развел флейм в соседней ветке и теперь размазываешь его здесь. И код не пишут на ООП. Его пишут на ООЯ.
 

Beavis

Banned
Автор оригинала: Sluggard
И код не пишут на ООП. Его пишут на ООЯ.
это ты наверно не мне хотел сказать? это не я синим писал, меня вполне и черный цвет сообщений устраивает)

кстати к тебе же вопрос, PHP - это ООЯ ?))

-~{}~ 10.03.08 03:44:

Автор оригинала: джамшут
ничего, если я это на башорг отправлю? :)
оказывается

классы != ООП, а
наследование == ООП

остается только добавить это в мануал, чтоб новички не путались, а то там понапихали классы в раздел ООП, даже не слушаясь HraKK'a
 

Sluggard

Новичок
Beavis
наследование == ООП
Угу. После приведения типов. :) Наследование !== ООП
Использование наследования - объектно-ориентированное программирование.
Класс - объектное программирование, но еще не объектно-ориентированное.
кстати к тебе же вопрос, PHP - это ООЯ ?))
В чем вопрос? Любой язык поддерживающий инкапсуляцию, наследование и полиморфизм считается ОО языком.
джамшут
иди умойся.
 

Beavis

Banned
Автор оригинала: HraKK
Не вижу что классы = ООП?
Блин а я столько набивал шишек чтоб понять что такое ООП, а оказывается
class a
{
}
это уже ООП! Йа круть пойду писать в резюме идеально владею ООП
нет, оказывается только начиная с
PHP:
class a extends b {
}
это ООП... но всё равно можешь писать резюме!

и вопрос к Sluggard'у - откуда взялось понятие "объектное программирование" и чем оно отличается от ООП ?
 

Angerslave

Новичок
Вам больше делать нечего, чем спорить о ерунде? От названия, имхо, суть не меняется.
 

Sluggard

Новичок
Beavis
Определение ООП состоит из понятий: объекты, их типы (классы), организованные иерархически (наследование). Или наследование выкинули из определения?
откуда взялось понятие "объектное программирование"
Вероятно с того времени, когда появились языки поддерживающие классы без поддержки наследования и полиморфизма. :)
 

Beavis

Banned
Sluggard
а нет какой-нибудь ссылочки почитать про объектное программирование?)
 

dimagolov

Новичок
Beavis, ну к примеру таковым представителем можно назвать JavaScript, так как классов там нету, в отличии от объектов, которые есть.
 
Сверху