日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php面向对象代码_PHP面向对象之抽象类详解(代码实例)

發布時間:2023/12/19 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php面向对象代码_PHP面向对象之抽象类详解(代码实例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【摘要】

PHP即“超文本預處理器”,是一種通用開源腳本語言。PHP是在服務器端執行的腳本語言,與C語言類似,是常用的網站編程語言。PHP獨特的語法混合了C、Java、Perl以及 PHP 自創的語法。下面是PHP面向對象之抽象類詳解(代碼實例),讓我們一起來看看PHP面向對象之抽象類詳解(代碼實例)的具體內容吧!

本文目標:

1、了解PHP中抽象類的定義

2、了解PHP中抽象類的作用

3、了解PHP中抽象類的使用場景

4、掌握PHP中抽象類的具體實現

還是按照之前一貫的思路,我們通過3W1H的方式進行學習,那么首先我們來了解一下

(一)、了解PHP中抽象類的定義(What)

抽象類往往用來表征對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。通常在編程語句中用 abstract 修飾的類是抽象類。

和接口的不同之處在于,接口中的方法都是不實現的,只是單純的定義,但是抽象類中的方法是可以實現的。

(二)、了解PHP中抽象類的作用(Why)

在PHP中的類當中,有很多類會被不斷的重寫,這個時候我們可以使用抽象類,怎么做呢?就是先寫一個公共的類,然后實例化之后我們可以重復去調用。這樣可以提高代碼的可重用性

(三)、了解PHP中抽象類的使用場景(Where)

1、如果發現代碼中很多類都有相似或者共同的方法,我們可以把這些相同或者相似的方法抽離出來,封裝到抽象類中。

抽象類和接口有點相似,可以這么說,接口是一個特殊的抽象類,只不過接口里面全都是抽象的方法,(所謂抽象就是沒有具體的實現),但是抽象類中的部分方法,是可以具備實現的功能,

(四)、掌握PHP中抽象類的具體實現(How)

總結:

1、抽象類的定義通過abstract 定義,比如abstract class 類名{}

2、抽象類的方法的定義也是通過abstract定義,比如abstract public function 方法名(){}

3、抽象類是不能被實例化的

4、要繼承一個抽象類,通過關鍵字extends

5、抽象類的子類必須要實現抽象類中未實現的所有方法,也就是說要重寫抽象類中所有abstract的方法

6、抽象類的子類雖然沒有實現抽象類中的已經實現的方法,一樣可以調用這些方法,其實結合繼承我們可以很好理解這點

每個總結都是通過實踐得出來的,現在我們用實踐來演示總結,這樣可以促進理解,讓每個總結理解起來更加清晰,直觀

(五)、具體代碼

案例一、

實踐目標:

1、抽象類的定義通過abstract 定義,比如abstract class 類名{}

2、抽象類的方法的定義也是通過abstract定義,比如abstract public function 方法名(){}

具體代碼如下:<?php

abstract class Animal{

abstract public function eat();//抽象方法

//呼吸

public function breath(){

//所有動物的呼吸方法都是一樣的,就不需要使用多態了

echo "呼吸
";

}

}

?>

案例二、

實踐目標:

1、抽象類是不能被實例化的

具體代碼如下:<?php

abstract class Animal{

abstract public function eat();//抽象方法

//呼吸

public function breath(){

//所有動物的呼吸方法都是一樣的,就不需要使用多態了

echo "呼吸
";

}

}

$animal = new Animal();

?>

運行結果為:

Fatal error: Uncaught Error: Cannot instantiate abstract class Animal in D:\E-class\class-code\classing\index.php:10 Stack trace: #0 {main} thrown inD:\E-class\class-code\classing\index.phpon line10

案例四、

實踐目標:

1、要繼承一個抽象類,通過關鍵字extends

2、抽象類的子類必須要實現抽象類中未實現的所有方法,也就是說要重寫抽象類中所有abstract的方法

具體代碼如下:<?php

abstract class Animal{

abstract public function eat();//抽象方法

//呼吸

public function breath(){

//所有動物的呼吸方法都是一樣的,就不需要使用多態了

echo "呼吸
";

}

}

//定義猴子

class Monkey extends Animal{

}

?>

如果Monkey類繼承了抽象類,但不實現里面的abstract方法,那么運行結果為:

Fatal error: Class Monkey contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Animal::eat) inD:\E-class\class-code\classing\index.phpon line13

接下來我們來實現abstract方法

具體代碼如下:<?php

abstract class Animal{

abstract public function eat();//抽象方法

//呼吸

public function breath(){

//所有動物的呼吸方法都是一樣的,就不需要使用多態了

echo "呼吸
";

}

}

//定義猴子

class Monkey extends Animal{

//實現抽象類中的抽象方法

public function eat(){

echo "我是猴子類中的eat方法
";

}

}

$monkey = new Monkey();

$monkey->eat();

?>

運行結果如下:

我是猴子類中的eat方法

案例五、

實踐目標:

1、抽象類的子類雖然沒有實現抽象類中的已經實現的方法,一樣可以調用這些方法,其實結合繼承我們可以很好理解這點

具體代碼如下:<?php

abstract class Animal{

abstract public function eat();//抽象方法

//呼吸

public function breath(){

//所有動物的呼吸方法都是一樣的,就不需要使用多態了

echo "抽象類中的呼吸方法
";

}

}

//定義猴子

class Monkey extends Animal{

//實現抽象類中的抽象方法

public function eat(){

echo "我是猴子類中的eat
";

}

}

$monkey = new Monkey();

$monkey->eat();

$monkey->breath();

?>

運行結果如下:

我是猴子類中的eat抽象類中的呼吸方法

(六)、學以致用

問題:將以下真實場景,用抽象類還原出來

小芳放學回到家中,一進家門,只見心愛的小狗“小愛”馬上就對主人搖起了尾巴,小芳笑了笑,走過去,抱起了小狗,最后,小芳和小狗親了一口

思路分析:

1、對象分析:學生,小狗

2、對象屬性分析:結合(現實世界+具體場景)

學生:名稱

狗:名稱

3、對象方法分析:結合(現實世界+具體場景)

學生:

(1)、放學

(2)、回到家中

(3)、走路

(4)、看

(5)、笑

(6)、抱東西

(7)、親嘴

狗:

(1)、看

(2)、搖尾巴

(3)、親嘴

4、我們發現這2個對象都有相似的方法,看,親嘴,所以我們可以把它們封裝到抽象類中,并且這2個方法不需要子類去重寫,因為都是一樣的

具體代碼如下:<?php

abstract class Animal{

//看

public function look($obj){

//所有動物的呼吸方法都是一樣的,就不需要使用多態了

echo "看見了".$obj->name."
";

}

//親嘴

public function kiss($fromobj,$toobj){

echo $fromobj->name."親了".$toobj->name."一口
";

}

}

//學生

class Student extends Animal{

public $name = "";

public function __construct( $name ){

$this->name = $name;

}

// 1、放學

public function offschool(){

echo $this->name."放學了
";

}

//回家

public function goHome(){

echo $this->name."回到家中
";

}

// 2、走路

public function walk(){

echo $this->name."走了過去
";

}

// 3、看

// 4、笑

public function smile(){

echo $this->name."微笑了
";

}

// 5、抱東西

public function hug($obj){

echo $this->name."抱起了".$obj->name."
";

}

// 6、親嘴

}

//狗

class Dog extends Animal{

public $name = "";

public function __construct( $name ){

$this->name = $name;

}

//1、看

//2、搖尾巴

public function wagTail(){

echo $this->name."搖了尾巴
";

}

//3、親嘴

}

//創建對象

$xf = new Student("小芳");

$dog = new Dog("小愛");

//小芳放學了

$xf->offschool();

//小芳放學回到家中,一進家門,只見心愛的小狗“小愛”馬上就對主人搖起了尾巴,小芳笑了笑,走過去,

//抱起了小狗,最后,小芳和小狗親了一口

//小芳回答家中

$xf->goHome();

//小芳看見小狗

$xf->look($dog);

//小狗搖尾巴

$dog->wagTail();

//小芳笑了笑

$xf->smile();

//小芳走過去

$xf->walk();

//抱起小狗

$xf->hug($dog);

//小芳親了小狗

$xf->kiss($xf,$dog);

//小狗也親了小芳

$dog->kiss($dog,$xf);

?>

運行結果為:

小芳放學了小芳回到家中看見了小愛小愛搖了尾巴小芳微笑了小芳走了過去小芳抱起了小愛小芳親了小愛一口小愛親了小芳一口

(七)、總結

1、本文主要講解了PHP中抽象類的定義,作用以及具體的實現

希望本文能給大家帶來一定的幫助,謝謝!!!

以上就是PHP面向對象之抽象類詳解(代碼實例)的內容,對PHP感興趣的小伙伴們可以關注考必過,獲取更多PHP前沿資訊和最新技術。最新消息小編會第一時間發布,助力大家考試,加油!

總結

以上是生活随笔為你收集整理的php面向对象代码_PHP面向对象之抽象类详解(代码实例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。