php--最终类final

思考:继承是利用了一些共性以及共性大小来拆分的父类和子类,父类的目的是为了给子类提供一些共性代码,子类可以从父类继承,而且还可以有子类无限继承子类,

继承的目的一是利用父类提供的公共代码,二是实现自身需求的扩展,如果子类无线被继承会有什么后果呢?

引入:事务的划分首先不可能无限细化,因此肯定是不需要无线的出现子类的,一旦无线出现子类,那么就会导致代码的执行效率大大降低,而且可能被某些无关类

继承从而出现安全问题,但是从代码设计的角度来讲是无法显示开发者的,因此php提供了一种终结机制,让类无法被继承

最终类final【掌握】

定义:最终类,使用final关键字修饰类名,表示此类不可以继承。

1.基础语法 final class posen{}

<?php

final class posen{


}

?>

2.最终类无法被继承  运行提示错误

<?php

final class posen{
public $name=332;

}

class man extends posen{      //运行后 致命的错误,无法从final类继承

}

?>

3.final关键字不知修饰类表示类不可被继承,还能修饰方法,表示方法不能不被重写

<?php
 class posen{
public $name=332;
public final function show(){   //最终方法
   echo __CLASS__;
}
}

class man extends posen{      //运行后 致命的错误,无法从final类继承

   public function show(){
      echo "我能重写这个方法吗?";
   }
}

$s=new man();
$s->show();    //错误不能重写final的方法  致命的错误

?>

总结:

  final关键字修饰的类表示无法被继承

  final关键字还可以修饰方法,表示方法不能被子类重写(通常类不会使用final关键字)

  fnal修饰类包实不希望类在出现子类,可以很好保护类的内部结构不被暴露

  final修饰方法表示不希望方法被修改,可以在一个更高的维度来保证同类事务的共同表现

原文地址:https://www.cnblogs.com/xiaowie/p/12292260.html