php对象的三大特征,关于php中面向对象的三大特征(封装/继承/多态)
最近在學習php的過程中發現它其實比java的語言要松散很多,而且很多人說上手比較容易,但是智言我個人并不是很認同這樣的觀點,因為其實java的整個語法規則都非常的有條有理,雖然函數很多,但是至少經常用到的也就是那么一些,而在php中雖然函數比不上java,但是整個php的語法感覺比java要松散而混亂,所以相比來說,我認為java比php要好學一些。當然,這也有可能是我先學習了java然后再去學php的原因。
首先說說php中的三大特征,三大特征和java中是一樣的,分為封裝、繼承、多態,同樣還有另外一個學習點,就比如覆蓋和重寫。
覆蓋和重寫和java中是一樣的,我這里就不多講。
那么先講講封裝
封裝
php中的封裝可以說也是和java中的封裝是差不多的,只是,在php中又另外提供了一個魔術函數 __set 和 __get方法,而設計者本身也不推薦使用,我個人也還是喜歡像java中的封裝,畢竟已經非常熟練了。
private $name;
private $age;
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
public function setAge($age){
$this->age = $age;
}
public function getAge(){
return $this->age;
}
?>
然后大家就可以通過提供的公共方法來調用和賦值了。
而魔術函數 __set 和 __get方法由于創建者都不推薦,所以這里就不多說,有興趣的朋友可以在百度里進行自行搜索,謝謝。
繼承
對于繼承而言其實和java中的也是差不多的。
如下:
class A{
public function method(){
echo '我是方法A';
}
}
class B extends A{
public function methodTwo(){
echo '我是方法B';
}
}
$b = new B();
$b->method();
$b->methodTwo();
?>
繼承需要注意幾點:
子類最多只能繼承一個父類(指直接繼承);
子類可以繼承其父類(或者超類)的public、protected修飾的變量(屬性)和函數(方法);
在創建某個子類對象時,默認情況下會自動調用其父類的構造函數。
如果在子類中需要訪問其父類的方法(構造方法/成員方法 方法的訪問修飾符是public/protected),可以使用父類::方法名(或者parent::方法名)來完成。
如果子類(派生類)中的方法和父類(基類)方法相同,我們稱為方法重寫/方法覆蓋。
當然了,因為目前更新版本的問題,我所學的版本是5.3的版本,所以在最新的版本中智言還沒有去研究,所以還會繼續去看看研究的。
多態
至于多態,那就基本上和java中是不一樣的啦,因為在java中,多態是這樣寫的。
class ZhiYan{
void method(){
System.out.println("我是方法一");
}
void method(int a){
System.out.println("我是方法二");
}
void method(int a,int b){
System.out.println("我是方法三");
}
}
ZhiYan zhiyan = new ZhiYan();
zhiyan.method();
zhiyan.method(5);
那么在java中會根據你傳遞的參數在自動選擇需要匹配的方法,而在php中是不支持這樣的方法,不知道php7中會不會有所改動…
php中依然要用到魔術方法 __call ,那么是這樣寫的:
class Reload{
public function test1($a){
echo "test1..";
}
public function test2($a,$b){
echo "text2---".$a.$b;
}
//這里提供一個魔術函數 __call
public function __call($method,$a){
if($method=="test"){
if(count($a)==1){
$this->test1($a);
}else if(count($a)==2){
$this->test2($a);
}
}else{
echo '沒有匹配到你需要的方法';
}
}
}
$load = new Reload();
$load->test(1);
?>
所以在學習php過程中,如果你沒有編程基礎,我想會更容易上手吧,至少不會混亂,而如果學習過其他語言,你的優勢更多的將是你上手會很快,而你學到后面,有時候總結不到位,會學的混亂一些。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的php对象的三大特征,关于php中面向对象的三大特征(封装/继承/多态)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 跨域名存储cookie,实现跨域
- 下一篇: 数学实验matlab课后习题答案,mat