![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
mam taki kod[php:1:28ea0a47c9]#!/usr/local/bin/php
<?php abstract class abstr{ protected $name; abstract function __construct(); protected function name(){ return $this->name; } protected function __destruct(){ return; } } class used extends abstr { function __construct(){ $this->name="used"; } } $test=new used; print $test->name(); ?>[/php:1:28ea0a47c9]Ten kod wywala mi taki blad Cytat Fatal error: Call to protected method abstr::name() from context '' in /usr/local/apache/cgi-bin/classtest.php on line 20 Co tu jest nie tak? Z tego co wiem protected oznacza, ze metoda/wlasciwosc jest dziedziczona. Czy moze w php odnosi sie to tylko do wlasciwosci?
PS. Z tego wynika, ze __construct() wywoluje sie nie tylko przy new klasa(); ale tez przy zwyklych wywolaniach new klasa; |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
a no tak. Jeśli definiuje metode w klasie jako protected, to potem po dziedziczeniu ona nadal jest protected. Musiałbym zdefiniować inną metodę, która tą metodę wywołuje, lub zdefiniować tą matodę jako public w klasie nadrzędnej albo po prostu ją nadpisać w klasie podrzędnej...
|
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 1 Dołączył: 3.08.2008 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Naprawdę sądzisz, że ~Jabol pięć [sic!] lat czekał na odpowiedź?
Czytaj daty postów. Zamykam odgrzewanego kotleta. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 02:11 |