final關鍵字
php final關鍵字用來在一個函數或者類名稱前面,表明該函數不能被重寫或者該類不能被繼承。
1、final方法不能被重寫。
如果不希望類中某個方法被子類重寫,只需要在這個方法前加上關鍵字final,即設置final方法。
實例:
代碼如下 復制代碼<?php
class ex1{
final function fn1(){
return "php";
}
}
class ex2 extends ex1{
function fn1(){
return "html";
}
}
$p= new ex2();
echo $p->fn1();
?>
加了final關鍵字的方法不能被重寫,運行出錯。
2、final類不能被繼承。
被聲明了final的類不能被繼承,否則出錯。
實例:
代碼如下 復制代碼<?php
final class ex1{
private $name;
}
class ex2 extends ex1{
private $age;
}
?>
static關鍵字
php static關鍵字不僅可以用來聲明一個靜態變量,在類中同樣可以聲明靜態的屬性或者方法,成為“類屬性”或“類方法”。
1、聲明了靜態的屬性和方法後,在類中不能用$this關鍵字來引用,可以使用下面兩種方法引用:
在類中:self::靜態成員名稱
在類外:類名稱::靜態成員名稱
2、訪問該類時,可不必實例化,直接使用類名稱::靜態成員名稱的格式。
靜態屬性實例:
代碼如下 復制代碼<?
class user{
private static $count = 10;
private static $sum=1;
public function __construct(){
for($i=1;$i<11;$i++){
self::$sum = self::$sum * self::$count; /* 調用靜態變量 */
self::$count--;
}
}
public function getCount(){
return self::$sum;
}
}
$user1 = new user();
echo $user1->getCount();
?>
靜態方法實例:
代碼如下 復制代碼<?
class Math{
public static function sum($num1,$num2){
return $num1 + $num2;
}
public static function product($num1,$num2){
return $num1 * $num2;
}
}
$a = 88;
$b = 100;
echo "兩數之和為: ";
echo "<br>";
echo Math::sum($a,$b);
echo "<P>";
$a = 66;
$b = 88;
echo "兩數之積為: ";
echo "<br>";
echo Math::product($a,$b);
?>
$this關鍵字
為了解決php類和對象中變量與屬性的命名沖突和不確定性問題,引入了”$this”關鍵字來調用當前的對象。
在類中調用當前對象的屬性和方法,必須使用”$this->”關鍵字;
$this在構造函數中指該構造函數所創建的新對象;
方法內的局部變量不屬於對象,不使用$this關鍵字取值。
使用$this關鍵字,我們可以在類中調用對象屬性或者方法。
1、調用變量
實例:
代碼如下 復制代碼<?php
class user{
private $n;
function __construct(){
$name="Mike";
echo $this->n=$name;
}
}
$p=new user();
?>
2、調用方法
實例:
代碼如下 復制代碼<?php
class cal{
public function sum($a,$b){
return $a+$b;
}
public function prt($a,$c){
return $a*$c;
}
public function result($a,$b,$c){
$a=$this->sum($a,$b);
return $this->prt($a,$c);
}
}
$c=new cal();
echo "(2+3)*10= " .$c->result('2','3','10');
?>