2015-02-24 4 views
1

По моим сведениям, мы не можем использовать частную собственность в унаследованном классе. то, что this.it еще работаетчастный спецификатор в php

<?php 

class oops1 
{ 
    private $text; 

    function __construct($txt) 
    { 
     $this->text=$txt; 
    } 

    function disply() 
    { 
     echo 'text:'.$this->text; 

    } 
} 

class abc extends oops1 
{ 
    public $headertext; 

    function __construct($ht,$txt) 
    { 
     $this->headertext=$ht; 
     $this->text=$txt; 
    } 

    function disp2() 
    { 
     echo "Header Text: $this->headertext"; 
     echo "<br>Text: $this->text"; 
    } 
} 

$obj=new abc("g", "h"); 
$obj->disp2(); 

он все еще показывает HeaderText и текст, который определен в базовом классе как частный ... Whats проблема

ответ

2

Потому что это создает свойство класса в этой строке:

$this->text=$txt; 

Если взять ее и инициализировать его в базовом классе, как это:

private $text = "test"; 

А потом вы пытаетесь получить доступ к нему, вы не сможете

+0

dnt получить это ......... –

+0

@Davinderkumar Добро пожаловать! Наслаждайтесь своим днем: D – Rizier123

+1

Когда вы делаете '$ this-> text = $ txt;' в классе abc, вы на самом деле создаете свойство с именем '$ text', которое принадлежит классу abc, таким образом вы можете получить к нему доступ непосредственно в class abc, так как он принадлежит этому классу. Если вы хотите назначить '$ this-> text = $ txt' классу oops1, вам придется вызывать' parent :: __ cosntruct() '. Справедливости ради немного странно, что вы можете создавать свойства класса «на лету», впервые увидев его. –

1

В PHP, если вы пытаетесь установить свойство класса, который не существует, то он будет создан как свойство public. Вы правы в своем предположении, что доступ к частной собственности не может осуществляться дочерними классами.

Если намерение здесь для вашего класса ребенок, чтобы иметь возможность получить доступ к свойству своих родителей, не делая свойство доступным вне классовой структуры, а затем использовать protected.

+0

Я просто хочу получить доступ к базовому свойству, которое дает ошибку вместо создания свойства :( –

Смежные вопросы