您的位置:首页 > 理论基础

组策略系列之三:用户或计算机应用组策略的前提

2010-09-11 12:19 246 查看


<?php
class fateher{
public $win = '一斤';
public function play(){
echo "理想";
}
}
class son extends fateher{
public function play(){
echo "网游";
}
public function momo(){
echo "momo";
}
}

$s9 = new son();
echo $s9->win,'<br/>';//一斤 ,
$s9->play();//网游
$s9->momo();//momo
?>
继承过来的,是指protected和public
父类有的,继承过来
继承过来,可以修改或覆盖 override
父类没有的,可以添加

继承时的权限变化

继承时,权限只能越来越宽松或不变,不能越来越严格

构造函数的继承

<?php
class Human{
public function __construct(){
echo "呱呱坠地<br/>";
}
}
class Stu extends Human{

}
$xiaoming = new Stu();

?>
构造函数也是可以继承的,而且继承的原则和普通方法一样
进而,如果子类也声明了构造函数,则父类的构造函数被覆盖了
如果父类的构造函数被覆盖了,自然只执行子类中的新的构造函数

进而引发了一个问题
如果是一个数据库操作类,或者model类,
我们肯定是要继承过去使用,不能直接操作model类
而model 类的构造函数,又做了好多初始化工作
重写model类的构造函数之后,导致初始化工作完成不了怎么办?

<?php
class Mysql{
protected $conn = null;
public function __construct(){
$this->conn = mysql_connect('localhost','root','');
}
public function query($sql){
return mysql_query($sql);
}
}
class MyDb extends Mysql{
public function __construct(){
parent::__construct();
//然后重新写子类的
}
public function autoInsert(){
return $this->query('use test');
}
}
/*$mysql = new Mysql();
var_dump($mysql->query('use test'));*/
$mydb = new MyDb();
var_dump($mydb->autoInsert());
?>
如果子类继承时,子类有继承函数,保险一点,调用parent::__construct
PHP中,子类只调用自己的或者子类继承的构造函数

继承的特点:
对于private或public 类型的属性和方法,完全继承过来,有权重写,调用
继承过来的属性和方法,
父类有的,子类也有
父类有的,子类可以更改
父类没有的,子类可以添加

对于private 类型的属性和方法,比较特殊
可以继承过来,但是有个标记,标记是从父类属性而来的
即在子类内部无权调用继承过来的私有属性和方法

构造方法的继承
构造方法也是可以继承的,
New子类时,如果构造方法继承过来,当然也要自动执行
但继承过来,子类重写了,自然执行子类的构造方法
注意:父类的构造方法不能再调用

本文出自 “杜国栋个人PHP学习博文” 博客,请务必保留此出处http://duguodong.blog.51cto.com/7667978/1387193
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: