Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304411
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站导航为爱好php程序的朋友们提供php相关的教程知识。

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重载。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

当对父类的方法进行重写时,子类中的方法必须和父类中对应的方法具有相同的方法名称,在PhP程序5中不限制输入参数类型、参数数量和返回值类型。(这点和Java不同)。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

声明方法时,如果不定义访问权限。默认权限为public。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

PhP程序5重写方法

先设置一个父类,这个父类是 “Dog”类,这个类描述了dog的特性。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Dog有2个眼睛,会跑,会叫。就这样描述先。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

我养了一直狗,是只小狗,符合Dog类的特性,但有所不同。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

我的小狗有名字,我的小狗太小了,不会大声的叫,只会哼哼。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

我们用继承的概念去实现这个设计。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?
// 狗有两只眼睛,会汪汪叫,会跑.
class  Dog {
	protected  $eyeNumber =2; //属性
	//返回封装属性的方法.
	public function getEyeNumber(){ 
		return $this->eyeNumber;
	}
	//狗会叫	
	public function  yaff(){
		return  "Dog yaff, wang ..wang ..";
	}
	//狗会跑
	public function  run(){
		return  "Dog run..running ...";
	}
}
$dog = new Dog();
echo "dog have ".$dog->getEyeNumber()." eyes. <br>";
echo $dog->yaff() ."<br>".$dog->run();
echo  "<br><br>";
//这是我的小狗叫"狗狗",它很小.不会汪汪叫,只会哼哼哼..
class MyDog extends Dog {
	private $name = "狗狗";
	public function getName(){
		return $this->name;
	}
    public function  yaff(){
		return  $this->name." yaff, heng...heng ..";
	}	
}
$myDog = new MyDog();
echo $myDog->getName()." have ".$myDog->getEyeNumber()." eyes. <br>";
echo $myDog->yaff() ."<br>".$myDog->run();
?>

程序运行结果:LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

dog have 2 eyes. 
Dog yaff, wang ..wang ..
Dog run..running ...
狗狗 have 2 eyes. 
狗狗 yaff, heng...heng ..
Dog run..running ...

重写方法与访问权限

子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

父类为public 子类为 private时。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?
// 简化dog类和mydog类,演示重写的访问权限.
class Dog {
	protected  $eyeNumber =2; //属性
	//返回封装属性的方法.
	public function getEyeNumber(){ 
		return $this->eyeNumber;
	}	
}
class MyDog extends Dog {
	protected function getEyeNumber(){ 
		return $this->eyeNumber;
	}	
}
/*
class MyDog extends Dog {
	private function getEyeNumber(){ 
		return $this->eyeNumber;
	}	
}
*/
?>

程序运行结果:LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Fatal error: Access level to MyDog::getEyeNumber() must be public (as in class Dog) in E:\PhP程序Projects\test.php on line 15

父类为public 子类为 protected时。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?
// 简化dog类和mydog类,演示重写的访问权限.
class Dog {
	protected  $eyeNumber =2; //属性
	//返回封装属性的方法.
	public function getEyeNumber(){ 
		return $this->eyeNumber;
	}	
}
class MyDog extends Dog {
	private function getEyeNumber(){ 
		return $this->eyeNumber;
	}	
}
?>

程序运行结果:LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Fatal error: Access level to MyDog::getEyeNumber() must be public (as in class Dog) in E:\PhP程序Projects\test.php on line 15

重写时的参数数量

子类可以拥有与父类不同的参数数量。(这点与java不同,PhP程序是弱类型语言。)LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?
// 简化dog类和mydog类,演示重写方法的参数.
class  Dog {
	protected  $eyeNumber =2; //属性
	//返回封装属性的方法.
	public function getEyeNumber(){ 
		return $this->eyeNumber;
	}	
}
class MyDog extends Dog {
	//重写的方法与父类的方法有不同的参数数量.
	public function getEyeNumber($eys){
		$this->eyeNumber = $eys;
		return $this->eyeNumber;
	}	
}
$myDog = new MyDog();
echo "my dog hava ".$myDog->getEyeNumber(3) ." eyes.";
//啸天犬..哈..
//下面这句会报一个丢失参数的错误.
//echo "my dog hava ".$myDog->getEyeNumber() ." eyes.";
?>

程序运行结果:LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

my dog hava 3 eyes.

构造函数重写

下面这个例子中,父类和子类都有自己的构造函数,当子类被具体实例操作化时,子类的构造函数被调用,而父类的构造函数没有被调用,请对比第一节的构造函数继承。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?
//2-2 / extends1.php
//构造函数继承的问题.
class Animal{
	public $legNum = 0; 
	public function __construct(){
		$this->legNum = 4;
		echo "I am an animal<br>";
	}
}
class Dog1 extends Animal {
	public function __construct(){
		$this->legNum = 4;
		echo "I am a Dog .<br>";
	}
}
$dog1 = new Dog1();
echo "<br>";
echo  "legNum is ".$dog1->legNum;
/*
具体实例操作化子类时.构造函数被调用了.
*/
?>

程序运行结果:LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

I am a Dog .
legNum is 4

注:这点和Java不同,在java中构造函数是不能被继承的,而且子类具体实例操作化时,子类的构造函数被调用,父类的构造函数也会调用。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

名站网址导航

PhP程序面向对象之旅:this关键字LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$this在构造函数中指该构造函数所创建的新对象。LhdAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

好了关于php程序的知识就说到这里希望可以帮助需要的朋友。,

标签:

分享到:

  admin

注册时间:

网站:0 个   APP:3 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304411

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市