背景
子类继承了父类的成员方法,当继承的成员方法不适合当前子类时,我们就需要重写该成员方法
两种不同重写(完全和增加)
1.完全的重写(完全重写继承的成员方法)
源代码:
<?php
class Father
{
public function jump()
{
echo "还皮不皮<br />";
}
public function work()
{
echo "我在工作<br />";
}
}
class Son extends Father
{
public function jump()
{
echo "我不皮了<br />";//完全重写
}
}
?>
显示:
我不皮了
2.增加的重写(保留原成员方法,增加新的功能)
关键字:parent
语法:parent::成员方法名() ;
源代码:
<?php
class Father
{
public function jump()
{
echo "还皮不皮<br />";
}
public function work()
{
echo "我在工作<br />";
}
}
class Son extends Father
{
public function jump()
{
echo "我不皮了<br />";//完全重写
}
public function work()
{
parent::work();//调用原来的方法
echo "我要成为百万富翁";//增加
}
}
显示:
我不皮了
我在工作
我要成为百万富翁
不能重写的修饰符
关键字:final
1.final在修饰类的时候,被修饰的类无法被继承
<?php
final public class Father
{
}
//修饰类的时候,被修饰的类无法被继承
?>
2.final在修饰成员方法的时候,被修饰的成员方法无法被继承
<?php
public class Father
{
final public jump()
{
}
}
//修饰方法的时候,被修饰的方法无法被重写
?>
重写的注意事项:
子类在继承父类的成员属性和成员方法的时候,会一并继承父类中原来的权限(public,protected,private无法被继承),但是我们在重写子类中的成员属性和方法时可以改变这些权限(一般不做改变),改变的权限只能比原来的大,或者与原来的一样
权限修改
父类 | 子类 |
public | public |
protected | protected 或 public |