PHP学习——28 PHP面向对象(抽象类与抽象方法、接口的实现)

一、抽象类与抽象方法

<?php 
// 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
abstract class Person // 定义为抽象的类不能被实例化。
{
	public $name;
	public function __construct($name)
	{
		$this->name = $name;
	}
	// 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。 
	abstract protected function hello();
	abstract protected function say();
	public function show()
	{
		return "我的名字:".$this->name;
	}
}
class Worker extends Person
{
	// 必须在子类中将抽象类的全部抽象方法全部实现才可以
	public function hello()
	{
		return 'Hello '.$this->name;
	}
	public function say()
	{
		return 'Say '.$this->name;
	}
}
$worder = new Worker('小明');
echo $worder->hello();  // Hello 小明
echo '<hr>';
echo $worder->say();  // Say 小明
echo '<hr>';
echo $worder->show();  // 我的名字:小明
?>

二、接口的实现

使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

接口中定义的属性是类常量,定义的所有方法都必须是公有的抽象方法,所以public 、abstract 可不写,这是接口的特性。

<?php 
interface Person1
{
	// 接口中定义的属性必须是:类常量
	const SITENAME = '我在学习PHP';
	// 接口中定义的所有方法都必须是公有的抽象方法,所以public 、abstract 可不写
	function show();
	function do();
}
interface Person2
{
	function hello();
}
// 接口不允许实例化,但可以被继承,创建一个类继承接口并实现所有的抽象方法
class Worker implements Person1,Person2
{
	public function show()
	{
		return self::SITENAME;
	}
	public function do()
	{
		return '我在写代码~~';
	} 
	public function hello()
	{
		return 'PHP是非常好的一种语言~~';
	} 
}
$worker = new Worker();
echo $worker->show();  // 我在学习PHP
echo '<hr>';
echo $worker->do();  // 我在写代码~~
echo '<hr>';
echo $worker->hello();  // PHP是非常好的一种语言~~
?>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值