代码:

<?php
class Monkey{
	public function climb() {
		echo '猴子会爬树!';
	} 
}

interface bird {
	public function fly();
}


interface fish {
	public function swimming();
}

class LittleMonkey extends Monkey implements bird, fish{
	public function fly() {
		echo '猴子会飞';
	}

	public function swimming() {
		echo '猴子会游泳!';
	}
}

$lm = new LittleMonkey();

$lm->fly();
echo '</br>';
$lm->swimming();
echo '</br>';
$lm->climb();

实现接口vs继承类

1 可以认为实现接口是对单一继承的补充

2 可以在不破坏类层级关系的前提下,对某个类功能拓展

final 关键字说明

1 如果我们希望某个类不被其他类继承(可能基于安全性考虑);可以使用final

2 如果我们不希望某个方法不被重写

代码实例:

class A {
 	final public function getRate($val) {
 		return $val*0.08;
 	}
}

class B extends A{
	public function getRate($val) {
		return 12;
	}
}

$b = new B();
var_dump($b->getRate(1000));  //报错Fatal error: Cannot override final method A::getRate()

3 final不能去修饰属性

发表评论

电子邮件地址不会被公开。