名站导航为爱好php程序的朋友们提供php相关的教程知识。
什么是继承
前面说过,面向对象的思想和我们的生活是息息相通的。我们先分析一个生活中的例子:自行车、折叠车、电动车的关系。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
自行车有什么特征(属性)?hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 两个轱辘hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 一个车座hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 两个脚蹬子hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 有颜色hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 自行车有什么动作(方法)?hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 骑行hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 刹车hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
|
|
折叠自行车有什么特征(属性)?hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 两个轱辘hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 一个车座hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 两个脚蹬子hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 有颜色hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 折叠自行车有什么动作(方法)?hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 骑行hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 刹车hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 折叠hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
|
|
hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
电动自行车有什么特征(属性)?hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 两个轱辘hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 一个车座hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 两个脚蹬子hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 有颜色hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 电池一块hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 电动自行车有什么动作(方法)?hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 骑行hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 刹车hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 电动行驶hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
|
|
上面说明了自行车、折叠自行车、电动自行车特性。我们描述折叠自行车和电动自行车时,除红色标注的部分,都和自行车一样。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
我们尝试用另外一种方式,建立模型的方式来描述一次。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
自行车有什么特征(属性)?hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
两个轱辘hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 一个车座hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 两个脚蹬子hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 有颜色hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 自行车有什么动作(方法)?hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 骑行hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 刹车hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
|
|
hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
折叠自行车有什么特征(属性)hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
折叠自行车和自行车有相同的属性hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 折叠自行车有什么动作(方法)hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 折叠自行车具有自行车的所有方法。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 增加了折叠方法。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
|
|
hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
电动自行车和自行车有相同的属性和方法。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
增加了电池一块hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! 增加了电动行驶的方法hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站! hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
|
|
这次的描述变简单了,只需要将增加的内容填写上去。关于自行车的描述被复用了。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
仔细再观察对自行车的描述,我们发现上面三个自行车都缺少了一个重要的属性”车主架”。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
在例1中,我们要在三个描述中分别添加”车铃铛”,这个属性。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
在例2中,我们只要在自行车的描述中加入属性“车铃铛”,另外两个描述不用变化就完成。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
内容的添加。同样,动作(方法)的变化也很容易。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
感觉到了什么了么?它让我们的描述更容易“扩充和维护”。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
PhP程序5中的继承
继承是面向对象最重要的特点之一,就是可以实现对类的复用。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
通过“继承”一个现有的类,可以使用已经定义的类中的方法和属性。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
继承而产生的类叫做子类。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
被继承的类,叫做父类,也被成为超类。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
PhP程序是单继承的,一个类只可以继承一个父类,但一个父类却可以被多个子类所继承。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
从子类的角度看,它“ 继承(inherit , extends)”自父类;而从父类的角度看,它“派生(derive)”子类。它们指的都是同一个动作,只是角度不同而已。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
子类不能继承父类的私有属性和私有方法。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
在PhP程序5中类的方法可以被继承,类的构造函数也能被继承。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
继承的简单例子
我们分析自然界中的关系,动物类与犬类的关系。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
animal.phphwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
<?
// animal.php
class Animal {
private $weight;
public function getWeight()
{
return $this->weight;
}
public function setWeight($w)
{
$this->weight = $w;
}
}
?>
Dog类继承自animal 类。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
dog.phphwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
<?
//dog.php
require_once('animal.php');
class Dog extends Animal
{
/**
*子类新增方法
*/
public function Bark()
{
echo "Wang~~Wang~~~ ";
}
}
?>
当我们具体实例操作化 animal 类的子类 Dog 类时, 父类的方法 setWeight() 和 getWeight() 被继承。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
我们可以直接调用父类的方法设置其属性$weight,取得其属性$weight。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
dog 类的具体实例操作 MyDog.php。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
<?
//myDog.php
require_once('dog.php');
$myDog = new Dog();
$myDog->setWeight(20);
echo "Mydog's weight is ".$myDog->getWeight().'<br>';
$myDog->Bark();
?>
构造函数的继承
有些资料上说PhP程序5的构造函数不被继承。演示的结果证明,PhP程序5的构造函数被继承了。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
当子类Dog1被具体实例操作化时,继承的构造函数被调用了。屏幕上显示了一句 “I am an Animal.”.hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
<?
//2-2 / extends.php
//构造函数继承的问题.
class Animal{
public $legNum = 0;
public function __construct(){
$this->legNum = 4;
echo "I am an animal<br>";
}
}
class Dog1 extends Animal {
}
$dog1 = new Dog1();
echo "<br>";
echo "legNum is ".$dog1->legNum;
/*
具体实例操作化子类时.构造函数被调用了.
*/
?>
私有变量和方法不被继承
私有变量不被继承,私有方法也不被继承。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
另外一种说法,私有变量和属性被继承了,但不能被调用。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
无论怎么说,都不能调用父类的私有属性和私有方法。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
2-2-4.php
<?
class employee{
private $sal=3000;
private function getSal(){
return $this->sal;
}
}
class Manager extends employee {
public function getManagerSal(){
return $this->getSal();
}
}
$manager = new Manager();<h1></h1>
echo $manager->getManagerSal();
?>
程序运行结果:hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
Fatal error: Call to private method employee::getSal() from context 'Manager' in E:\PhP程序Projects\test.php on line 11
名站网址导航
PhP程序面向对象之旅:访问控制hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
下面表格显示了访问的权限。hwPAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!
好了关于php程序的知识就说到这里希望可以帮助需要的朋友。,