1、parent关键字
parent是指向父类的指针,一般我们使用parent来调用父类的构造函数。
<?php
//final class dog{//如果在类前面加final,它就不会被子类所继承
class dog{
//var $name;
//private:私有的 把var 改成private
//private $name; 外部(类之外)是调用不出来访问不了的(包括子类也是访问不了)
//protected $name; //也是(类之外)外部是调用不出来访问不了的(这个子类可以访问)
//public $name; //public 公开的 这个是可以访问
var $name; //如果var声明,默认的是public
//php 将所有以__(两个下划线)开头的类方法保留为魔术方法。
//所以在定义类方法时,除了魔术方法,建议不要以__为前缀
//construct 构成;建造 构造函数声明必须是__construct()
function __construct($n){
$this->name = $n;
}
final function bark(){ //final 类不想被其它类继承,声明为final 其它函数不想被继承也可以final声明
echo $this->name."wang";
}
}
//habadog继承dog 右以用关键字extends来声明继承关系
class habadog extends dog{ //继承类dog的属性和方法过来
function __construct(){
//"test" 因为上面的父类里是带能数的,所以随便(什么都行)传个参数进去,
parent::__construct("test"); //parent::调用父类的属性(静态)和方法,也经常用于调用父类的构造函数
//加上这个parent::上面的__construct($n)带参数构造函数的$n就不会出错
// parent::主要用于调用带参数(或不带参数)的构造函数
}
}
$haba = new habadog();
$haba ->name="哈巴狗";
echo $haba->bark();
//输出结果 哈巴狗wang
//$mydog = new dog("zhangsan");
//$mydog->name = "facai";
//$mydog->bark();
?>
2、方法的覆盖
<?php
class dog{
public $name;
public function __construct(){
echo "测试输出的内容
";
}
public function bark(){
echo "父类的bark";
}
}
class haba extends dog{
public function bark(){
echo "继承的内容";
}
}
$haba = new haba();
$haba->bark();
//输出结果 测试输出的内容 继承的内容
//方法的覆盖:比如:bark()方法名相同:子类的方法,会把父类的方法覆盖
?>