11.类的继承
继承作为面向对象的三个重要特性的一个方面,在面向对象的领域有着极其重要的作用,
好像没听说哪个面向对象的语言不支持继承。继承是PHP5 面向对象程序设计的重要特性之
一,它是指建立一个新的派生类,从一个或多个先前定义的类中继承数据和函数,而且可以
重新定义或加进新数据和函数,从而建立了类的层次或等级。说的简单点就是,继承性是子
类自动共享父类的数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的
时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为
自己的内容,并加入若干新的内容。比如你现在已经有一个“人”这个类了,这个类里面有
两个成员属性“姓名和年龄”以及还有两个成员方法“说话的方法和走路的方法”,如果现在
程序需要一个学生的类,因为学生的也是人,所以学生也有成员属性“姓名和年龄”以及成
员方法“说话的方法和走路的方法”,这个时候你就可以让学生类来继承人这个类,继承之后,
学生类就会把人类里面的所有的属性都继承过来,就不用你再去重新声明一遍这些成员属性
和方法了,因为学生类里面还有所在学校的属性和学习的方法,所以在你做的学生类里面有
继承自人类里面的属性和方法之外在加上学生特有的“所在学校属性”和“学习的方法”,
这样一个学生类就声明完成了,继承我们也可以叫做“扩展”,从上面我们就可以看出,学生
类对人类进行了扩展,在人类里原有两个属性和两个方法的基础上加上一个属性和一个方法
扩展出来一个新的学生类。
通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型
不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基
类,又称为父类以及超类。由已存在的类派生出的新类称为派生类,又称为子类。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分
类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。采用继承性,
提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重
用性。
在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。
但是在PHP 和Java 语言里面没有多继承,只有单继承,也就是说,一个类只能直接从
一个类中继承数据,这就是我们所说的单继承。
例如:
下面是“人”类的抽象
代码片段
复制代码 代码如下:
//定义一个“人”类作为父类
class Person{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name, $sex, $age){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//这个人可以说话的方法, 说出自己的属性
function say() {
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
}
下面我们做一个“学生类”,如果不是用继承如下:代码片段
复制代码 代码如下:
//定义一个“人”类做为父类
class Student{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
var $school; //学生所在学校的属性
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name=””, $sex=””, $age=””, $school=””){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
$this->school=$school;
}
//这个人可以说话的方法, 说出自己的属性
function say() {
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
//这个学生学习的方法
function study() {
echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>";
}
}
//定义一个子类“学生类“使用”extends”关键字来继承”人”类
class Student extends Person{
var $school; //学生所在学校的属性
//这个学生学习的方法
function study() {
echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>";
}
}
通过上面“Student”类的定义,Student 类通过使用“extends”这个关键字把Person 类
里的所有成员属性和成员方法都继承过来了,并扩展了一个所在学校成员属性“school”,和
一个学习方法“study()”。现在子类“Student”里面和使用这个类实例出来的对象都具有如下
的属性和方法:
学生类“Student”里面的成员属性有:
姓名:name;
年龄:age;
性别:sex;
学校:school;
学生类“Student”里面的成员方法有:
说话方法:say();
学习方法:study();
通过上面类继承的使用简化了对象、类的创建工作量,增加了代码的可重性。但是从上
面这一个例子上中“可重用性”以及其它的继承性所带来的影响,我们看的还不是特别的明
显,你扩展的去想一下,人有无数个岗位,比如上面的学生还有老师、工程师、医生、工人
等,很多很多,如果每个类都定义“人”都共同具有的属性和方法,想一想会有很大的工作
量,这些属性和方法都可以从“Person”人类里面继承过来。
继承作为面向对象的三个重要特性的一个方面,在面向对象的领域有着极其重要的作用,
好像没听说哪个面向对象的语言不支持继承。继承是PHP5 面向对象程序设计的重要特性之
一,它是指建立一个新的派生类,从一个或多个先前定义的类中继承数据和函数,而且可以
重新定义或加进新数据和函数,从而建立了类的层次或等级。说的简单点就是,继承性是子
类自动共享父类的数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的
时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为
自己的内容,并加入若干新的内容。比如你现在已经有一个“人”这个类了,这个类里面有
两个成员属性“姓名和年龄”以及还有两个成员方法“说话的方法和走路的方法”,如果现在
程序需要一个学生的类,因为学生的也是人,所以学生也有成员属性“姓名和年龄”以及成
员方法“说话的方法和走路的方法”,这个时候你就可以让学生类来继承人这个类,继承之后,
学生类就会把人类里面的所有的属性都继承过来,就不用你再去重新声明一遍这些成员属性
和方法了,因为学生类里面还有所在学校的属性和学习的方法,所以在你做的学生类里面有
继承自人类里面的属性和方法之外在加上学生特有的“所在学校属性”和“学习的方法”,
这样一个学生类就声明完成了,继承我们也可以叫做“扩展”,从上面我们就可以看出,学生
类对人类进行了扩展,在人类里原有两个属性和两个方法的基础上加上一个属性和一个方法
扩展出来一个新的学生类。
通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型
不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基
类,又称为父类以及超类。由已存在的类派生出的新类称为派生类,又称为子类。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分
类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。采用继承性,
提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重
用性。
在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。
但是在PHP 和Java 语言里面没有多继承,只有单继承,也就是说,一个类只能直接从
一个类中继承数据,这就是我们所说的单继承。
例如:
下面是“人”类的抽象
代码片段
复制代码 代码如下:
//定义一个“人”类作为父类
class Person{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name, $sex, $age){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
}
//这个人可以说话的方法, 说出自己的属性
function say() {
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
}
下面我们做一个“学生类”,如果不是用继承如下:代码片段
复制代码 代码如下:
//定义一个“人”类做为父类
class Student{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
var $school; //学生所在学校的属性
//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name=””, $sex=””, $age=””, $school=””){
$this->name=$name;
$this->sex=$sex;
$this->age=$age;
$this->school=$school;
}
//这个人可以说话的方法, 说出自己的属性
function say() {
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
//这个学生学习的方法
function study() {
echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>";
}
}
//定义一个子类“学生类“使用”extends”关键字来继承”人”类
class Student extends Person{
var $school; //学生所在学校的属性
//这个学生学习的方法
function study() {
echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>";
}
}
通过上面“Student”类的定义,Student 类通过使用“extends”这个关键字把Person 类
里的所有成员属性和成员方法都继承过来了,并扩展了一个所在学校成员属性“school”,和
一个学习方法“study()”。现在子类“Student”里面和使用这个类实例出来的对象都具有如下
的属性和方法:
学生类“Student”里面的成员属性有:
姓名:name;
年龄:age;
性别:sex;
学校:school;
学生类“Student”里面的成员方法有:
说话方法:say();
学习方法:study();
通过上面类继承的使用简化了对象、类的创建工作量,增加了代码的可重性。但是从上
面这一个例子上中“可重用性”以及其它的继承性所带来的影响,我们看的还不是特别的明
显,你扩展的去想一下,人有无数个岗位,比如上面的学生还有老师、工程师、医生、工人
等,很多很多,如果每个类都定义“人”都共同具有的属性和方法,想一想会有很大的工作
量,这些属性和方法都可以从“Person”人类里面继承过来。
标签:
php,继承性
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com
暂无“php面向对象全攻略 (七) 继承性”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。