<?php
class Root
{
function myFun()
{
echo "root myfun<br>";
}
function myfunRoot()
{
echo "myfun root";
}
protected function FFun()
{
echo "我是父类函数";
}
}
class Sub extends Root
{
function myFun() //重载
{
echo root::myFun(). " Son myfun<br>"; //使用父类函数
}
function sonFun()
{
echo $this->myfunRoot()." son is son<br>";
}
function SonFFun()
{
$this->FFun();
}
}$p=new Sub();
$p->SonFFun();?>
就是在子类里,用 $this-> 为什么可以访问父类里 protected 的函数??而子类的对象却不行??如果说只允许在父类和子类里访问 protected 的属性和方法, 而对象不允许, 那么$this 是不是代表对象? 为啥 $this 却可以呢?
class Root
{
function myFun()
{
echo "root myfun<br>";
}
function myfunRoot()
{
echo "myfun root";
}
protected function FFun()
{
echo "我是父类函数";
}
}
class Sub extends Root
{
function myFun() //重载
{
echo root::myFun(). " Son myfun<br>"; //使用父类函数
}
function sonFun()
{
echo $this->myfunRoot()." son is son<br>";
}
function SonFFun()
{
$this->FFun();
}
}$p=new Sub();
$p->SonFFun();?>
就是在子类里,用 $this-> 为什么可以访问父类里 protected 的函数??而子类的对象却不行??如果说只允许在父类和子类里访问 protected 的属性和方法, 而对象不允许, 那么$this 是不是代表对象? 为啥 $this 却可以呢?
{
public $_name;
}现在,我给User类加个方法。就用getName()方法,输出$name属性的值吧!class User
{
public $name; function getName()
{
echo $this->name;
}
}//如何使用呢?$user1 = new User();$user1->name = '张三';$user1->getName(); //这里就会输出张三!$user2 = new User();$user2->name = '李四'; $user2->getName(); //这里会输出李四!怎么理解呢?我上面创建了两个User对象。分别是 $user1 和 $user2 。当我调用 $user1->getName()的时候。 上面User类中的代码 echo $this->name ; 就是相当于是 echo $user1->name;大概就是这么个意思!
事实上你就算实例化那个父类,此父类的对象依然不可以在外部引用FFun()
你可以试一试
/*******************/
$p2 = new Root();
$p2->FFun();
/*******************/
上面应该会报错的
只能是在子类的内调用,在其他类,new 一个子类对象是不能调用protectec方法的,