久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

詳談PHP中public,private,protected,abstract等關鍵字的用法

下面小編就為大家分享一篇詳談PHP中public,private,protected,abstract等關鍵字的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

PHP中常用的關鍵字

在PHP中包含了很多對函數(shù)和類進行限制的關鍵字,常用的通常有abstract,final,interface,public,protected,private,static等等,下面我們就將對這些進行分析整理各個的用法。

變量與方法的關鍵字public,private,protected

public的權限最大,既可以讓子類使用,也可以支持實例化之后的調用,

protected表示的是受保護的,訪問的權限是只有在子類和本類中才可以被訪問到

private 表示的是私有,只能夠是在當前的類中可以被訪問到

<?php
//
/**
* Define MyClass
*/
class MyClass
{
 public $public = 'Public';
 protected $protected = 'Protected';
 private $private = 'Private';
 public function printHello()
 {
 echo $this->public;
 echo $this->protected;
 echo $this->private;
 }
 protected function pro_test(){
 var_dump(1);
 }
}
$obj = new MyClass();
echo $obj->public; // 這行能被正常執(zhí)行
//echo $obj->protected; // 這行會產(chǎn)生一個致命錯誤
//echo $obj->private; // 這行也會產(chǎn)生一個致命錯誤
$obj->printHello(); // 輸出 Public、Protected 和 Private
$obj->pro_test();//直接報錯
?>

變量與方法的關鍵字static

static的作用就是能夠實現(xiàn)值或者方法在類中不需實例化的情況下調用,同時static修飾的變量具有與值存儲的功能,例如我們不使用static運行的結果如下:

<?php
function test(){
 $var=1;
 echo $var."</br>";
 $var++;
}
test();// 1
test();// 1
test();// 1
?>

如果我們給變量加上static那么就會變成這樣

<?php
function test(){
 static $var=1;
 echo $var."</br>";
 $var++;
}
test();// 1
test();// 2
test();// 3
?>

這里可能不能夠體會到PHP這樣做的好處,那么我們就先來假設一下讀者也熟悉JS,在JS中是沒有static這個關鍵字的,所以如果我們要來實現(xiàn)一個具有能夠保存每一次程序運算結果作為下一次運算的依據(jù)的一個程序我們需要這樣來寫。

var glo=0;
 function test(){
 glo++;
 document.writeln(glo);
 }
 test();
 test();
 test();

這樣就會把glo泄漏到全局變量中,如果生成的變量比較多,就會導致內(nèi)存泄露(內(nèi)存泄漏所指代的就是變量占用過多的內(nèi)存空間沒有別釋放)

<script>
 var glo=0;
 function test(){
 glo++;
 document.writeln(glo);
 }
 test();// 1
 test();// 2
 test();// 3 
</script>

所以相比于在沒有定義static的語言中,它具有一個優(yōu)勢是保持變量,不泄露內(nèi)存,也不容易導致全局變量被誤用(因為作用域不在全局)

$age=0;
$age++;
function test1() {
 static $age = 100;
 $age++;
 echo $age."</br>";
}
function test2() {
 static $age = 1000;
 $age++;
 echo $age."</br>";
}
test1(); // 101
test2(); // 1001

class與方法的關鍵字final

final只能夠用來修飾class與function,使用了final之后就不能夠被繼承,例如如下的代碼就會直接報錯

class BaseClass {
 public $public = 'Public';
 function test() {
 echo "BaseClass::test() called\n";
 }
 final public function moreTesting() {
 echo "BaseClass::moreTesting() called\n";
 }
}
class ChildClass extends BaseClass {
 public function moreTesting() {
 echo "ChildClass::moreTesting() called\n";
 }
}

特殊關鍵字interface,abstract

interface的意義在于規(guī)范編程的風格,設想一下就是如果是實現(xiàn)了一個接口那么我們在使用這個接口類的時候就必須要實現(xiàn)里面的方法,起到了統(tǒng)一命名的作用。

class是可以多繼承接口的,接口與接口之間的單繼承是通過extends來實現(xiàn)的,class與接口之間的關系確立是通過implements

示例代碼:

<?php
interface testA{
 function funcA();
}
interface testB{
 function funcB();
}
interface testC extends testA {
 function funcC();
}
class run implements testC ,testB {
 public function funcA()
 {
 // TODO: Implement funcA() method.
 }
 public function funcB()
 {
 // TODO: Implement funcB() method.
 }
 public function funcC()
 {
 // TODO: Implement funcC() method.
 }
}
?>

abstract的作用跟interface其實是一樣的,但是在interface中所有的方法都是必須要實現(xiàn)的,但是在abstract修飾的類中,可以有一個或者是多個的abstract修飾方法,所以我們可以這樣理解,interface就是abstract的一種特殊情況(當所有的方法都是抽象方法,都是必須要實現(xiàn)的)。abstract有以下的這些特征:

1. 只要類中有至少一個方法使用了abstract關鍵字,那么這個類是abstract,要加上相應的關鍵字

2. 抽象方法,只有方法的聲明部分,沒有方法體。

但是在我看來,abstract在實際的應用中有這樣的幾種場景

1. 多人編程的時候規(guī)范公共部分的命名規(guī)則(不做任何說明,原理跟interface一樣)

2. 實現(xiàn)不讓父級直接實例化使用

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學習交流,請勿用于商業(yè)用途。如損害你的權益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現(xiàn)針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現(xiàn)服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現(xiàn)APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現(xiàn)的多維數(shù)組排序算法,結合實例形式對比分析了php針對多維數(shù)組及帶有鍵名的多維數(shù)組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現(xiàn)無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發(fā)接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 中文字幕色站 | 狠狠操你 | 亚洲久久一区 | 日韩在线不卡 | 欧美精品99| 久在线观看| 亚洲精品电影网在线观看 | 男女一区二区三区 | 精品视频一区二区 | 国产高清在线精品 | 久热久热 | 亚洲二区视频 | 国产精品毛片一区二区在线看 | 日日草夜夜草 | 五月精品视频 | 97国产一区二区精品久久呦 | 国产高清一区二区 | 成人三级视频 | 亚洲精品电影网在线观看 | 日韩视频免费看 | 亚洲精品成人av久久 | 一级大黄色片 | 精品九九 | 久久999 | 91精品国产自产在线老师啪 | 久久伊人久久 | 97免费在线观看视频 | 久久国产精品精品 | 一级高清视频 | 日本成人中文字幕在线观看 | av免费网址 | 亚洲激情综合网 | 欧美日韩亚洲一区二区 | 欧美xxxx黑人又粗又长 | h视频在线免费看 | 日韩中文字幕高清 | 国产成人精品一区二区三区网站观看 | 91干b| 成年免费大片黄在线观看一级 | 国产亚洲精品美女久久久久久久久久 | 天天人人精品 |