PHP中类的继承特性之方法的重载(覆盖)
来源:互联网 发布:移动宽带看网络电视 编辑:程序博客网 时间:2024/06/05 20:02
<?php
/*类的继承特性之重载(也叫覆盖):
1.说的意思指的是子类可以重新定义一个和父类相同名字的方法,从而覆盖掉原来父类的方法,加上自己新添加的功能;
2.若原封不动的覆盖容易造成代码的重复(因为又得重新在子类中写一次原来父类中本来就有的功能),所以可以用"父类名::
父类方法()"的形式来输出原来父类本来就有的功能,这样就可以实现子类功能的扩展;
3.对象访问成员用"->",而类访问成员用"::";
4.由于父类名称可能改变,所以子类覆盖父类中的方法时可以采用关键字parent来代替父类名称使用,便于后期编程的修改;
5.若子类去覆盖父类中的构造方法,一定要在构造方法的最上面先调用一下父类的构造方法;
6.权限的问题:子类的权限一定要大于等于父类的权限,比如父类中成员方法为public时,子类继承过来的成员方法只能为public;
而父类中成员方法为protected时,子类中继承的权限只能为protected或者public
*/
class person{
protected $name;
protected $age;
public $sex;
function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
//父类中say()方法的权限为protected
protected function say(){
echo "我的名字是{$this->name},我的年纪是:{$this->age},我的性别为:{$this->sex}<br>";
}
function eat(){
}
function run(){
}
}
class student extends person{
var $school;
function __construct($name,$age,$sex,$school){
parent::__construct($name,$age,$sex);
$this->school=$school;
}
//父类为protected,子类中继承的方法的权限则只能为public或者protected
protected function say(){
parent::say();
echo "我所在的学校是{$this->school}";
}
function study(){
$this->say();
echo "111111111";
}
}
$stu=new student("刘仁","20","男","大梁工业大学");
$stu->study();
?>
/*类的继承特性之重载(也叫覆盖):
1.说的意思指的是子类可以重新定义一个和父类相同名字的方法,从而覆盖掉原来父类的方法,加上自己新添加的功能;
2.若原封不动的覆盖容易造成代码的重复(因为又得重新在子类中写一次原来父类中本来就有的功能),所以可以用"父类名::
父类方法()"的形式来输出原来父类本来就有的功能,这样就可以实现子类功能的扩展;
3.对象访问成员用"->",而类访问成员用"::";
4.由于父类名称可能改变,所以子类覆盖父类中的方法时可以采用关键字parent来代替父类名称使用,便于后期编程的修改;
5.若子类去覆盖父类中的构造方法,一定要在构造方法的最上面先调用一下父类的构造方法;
6.权限的问题:子类的权限一定要大于等于父类的权限,比如父类中成员方法为public时,子类继承过来的成员方法只能为public;
而父类中成员方法为protected时,子类中继承的权限只能为protected或者public
*/
class person{
protected $name;
protected $age;
public $sex;
function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
//父类中say()方法的权限为protected
protected function say(){
echo "我的名字是{$this->name},我的年纪是:{$this->age},我的性别为:{$this->sex}<br>";
}
function eat(){
}
function run(){
}
}
class student extends person{
var $school;
function __construct($name,$age,$sex,$school){
parent::__construct($name,$age,$sex);
$this->school=$school;
}
//父类为protected,子类中继承的方法的权限则只能为public或者protected
protected function say(){
parent::say();
echo "我所在的学校是{$this->school}";
}
function study(){
$this->say();
echo "111111111";
}
}
$stu=new student("刘仁","20","男","大梁工业大学");
$stu->study();
?>
阅读全文
0 0
- PHP中类的继承特性之方法的重载(覆盖)
- java类的继承中方法的覆盖与重载
- 类的继承,方法重载,方法覆盖
- Java继承中方法的覆盖和重载
- Java继承中方法的覆盖和重载
- Java继承中方法的覆盖和重载
- 继承之方法的覆盖
- Java继承和多态===Java继承中方法的覆盖和重载
- 继承类的重载函数及覆盖
- java入门教程-4.3Java继承中方法的覆盖和重载
- 对象继承时重载方法的覆盖问题
- Java中方法的重载和继承
- Java继承中重写(覆盖)和重载的简单实例
- C++父子类继承时的隐藏、覆盖、重载
- 重载、覆盖(重写)、多重继承的区别
- C++的重载、覆盖、隐藏、继承
- 继承、重载和覆盖的区别
- 重写,覆盖,继承,重载的分析
- C#基础知识
- android Sroll事件的一些坑
- A. Okabe and Future Gadget Laboratory
- T检验
- Mysql常用优化方案
- PHP中类的继承特性之方法的重载(覆盖)
- 设计模式(十八)composite
- struts2_标签、主题
- 仗剑走天涯
- 【Android】Splash的使用
- C++虚函数指针虚函数表
- CLIPS专家系统基本编程手册(一)
- ?: %04d snprintf string(type char) setw(int n) setfill(*)
- week3 归一化