ホームページ バックエンド開発 PHPチュートリアル PHPの高度な学習オブジェクト指向_PHPチュートリアル

PHPの高度な学習オブジェクト指向_PHPチュートリアル

Jul 13, 2016 pm 05:50 PM
abstract final php 1つ コンテンツ 存在する 勉強 物体 絶え間ない 私たち インターフェース 親切 高度な のために

学習内容: 抽象クラス、インターフェース、final、クラス定数

1. 抽象的な
実際の開発プロセスでは、一部のクラスはインスタンス化する必要がありません。たとえば、以前に学習した一部の親クラスは主にサブクラスに継承されるため、コードの再利用性が向上します
。 文法構造:
抽象クラス クラス名 {
属性 $name;
Method(){} //メソッドは抽象修飾子関数にすることもできます。メソッド名(){}
}
例:
抽象クラスの動物{
パブリック $name;
public $age;
// 抽象メソッドは、主にサブクラスを実装するためのメソッド本体を持つことができません;
抽象パブリック関数 cry();
//抽象クラスには抽象メソッドとインスタンス クラスのメソッドを含めることができます
パブリック関数 getname(){
echo $this->name;
}
}
クラス猫{
パブリック関数 cry(){
「ok」をエコーし​​ます;
}
}

理解: 動物クラスは実際には抽象的な概念であり、一部の動物に共通する属性や行動を規定していますが、実際にはそれ自体にはそれらの属性や行動はありません。別の例: 輸送、植物など

注:
1. クラスが abstract で変更された場合、そのクラスは抽象クラスになります。メソッドが abstract で変更された場合、そのメソッドはメソッド body => abstract function cry(); を持つことはできません。 {} も許可されていません
2. 抽象クラスはインスタンス化してはなりません。抽象クラスには抽象メソッドは必要ありませんが、クラスに抽象メソッドが含まれる場合は、クラスを抽象クラスとして宣言する必要があります。
3. クラスが別の抽象クラスを継承する場合、サブクラスはその抽象クラス内のすべての抽象メソッドを実装する必要があります (それ自体も抽象クラスとして宣言されている場合を除く)。
2. インターフェース
インターフェイスは、特定のクラスが使用する必要があるときに、いくつかの未実装のメソッドをカプセル化するものであり、特定の状況に応じてこれらのメソッドを書き出すことができます。 文法構造
インターフェイス インターフェイス名 {
//プロパティ、メソッド
//インターフェース内のメソッドにはメソッド本体を含めることはできません;
}
インターフェースの実装方法
class クラス名はインターフェイス名を実装します {

}
理解: インターフェイスは、より抽象的な抽象クラスです。抽象クラス内のメソッドはメソッド本体を持つことができますが、インターフェイス内のメソッドはメソッド本体を持つことができません。インターフェイスはプログラミングの多態性と、高い結合性と低い結合性の設計アイデアを実現します。
例:
// インターフェースは仕様と属性を定義し、通常は小文字の i で始まります。 インターフェイス iUSB{
パブリック関数 start();
パブリック関数 stop();
}
// カメラクラスを記述してインターフェースを実装させます
//クラスがインターフェースを実装する場合、クラスはインターフェースのすべてのメソッドを実装する必要があります
クラス Camera は iUsb{
を実装します public function start(){
echo 'カメラ開始作業';
}
パブリック関数 stop(){
echo 'カメラ停止作業';
}
}
//携帯電話クラスを作成します www.2cto.com
クラス Phone は iUsb を実装します{
public function start(){
echo '電話での仕事';
}
パブリック関数 stop(){
echo '電話は仕事を停止します';
}
}
$c=新しいカメラ();
$c->start();
$p=新しい電話();
$p->start();

インターフェースを使用する場合:
1. 仕様を設定し、他のプログラマーに実装してもらいます
2. 同じレベルの複数のクラスで特定の機能を実装する必要があるが、実装方法が異なる場合

概要:
1. インターフェイスはインスタンス化できず、インターフェイス内のすべてのメソッドは本体を持つことができません。
2. クラスはカンマ (,) で区切って複数のインターフェースを実装できます。クラスのデモは if1,if2,if3 を実装します{}
3. インターフェースには属性を含めることができますが、定数は修飾子を持つことができません (デフォルトは public 修飾子です)。 例: インターフェイス iUsb{
const A=90;
}
echo iUSB::A;
4. インターフェイス内のすべてのメソッドはパブリックである必要があり、デフォルトはパブリックです。 5. インターフェイスは他のクラスを継承できませんが、他のインターフェイスを複数継承することはできます
。 例: インターフェイス インターフェイス名は if1,if2 を拡張します{}
6. クラスは親クラスを継承しながら他のインターフェースも継承できます
例: class test extends testbaseimplements test1,test2{}

インターフェイスの実装とクラスの継承
PHP の継承は単一継承です。つまり、クラスは 1 つの親クラスのみを継承できます。これは、サブクラスの機能の拡張に一定の影響を与えます。インターフェイスの実装は、継承されたクラスの補足として見ることができます。継承は階層関係であまり柔軟性がありませんが、インターフェイスの実装は水平関係であり、継承関係を壊すことなく特定の機能を拡張できます。

3. ファイナル

1. 特定のクラスを他のクラスに継承させたくない場合 (セキュリティ上の理由など)、final
の使用を検討できます。 文法:
最終クラス A{}
2. メソッドがサブクラスによってオーバーライドされないようにするには、final を使用してメソッドを変更することを検討できます。これは、メソッドの継承権がパブリックな変更に依存するためです。 例: クラス A{
最終的な公開関数 getrate($salary){
$salary*0.08 を返します;
}
}
クラス B は A を拡張します{
//ここでの親クラスの getrate メソッドは Final を使用しているため、ここで getrate をオーバーライドすることはできません
//パブリック関数 getrate($salary){
// $給与*0.01を返します
; //}
}
3. Final は属性の変更には使用できません

4. クラス定数(const)

場合によっては、そのような要件が存在する可能性があります。メンバー変数を変更したくないが、変数の値を固定したい場合は、const 定数を使用できます (const 名はすべて大文字で、$ を除く必要があります)シンボルと定数は変更できません)
文法:
const constant name=constant value; //定数は変更できないため、初期値を割り当てる必要があります
電話:
クラス名::定数名 [self::定数名はこのクラス内で使用できます] または インターフェイス名::定数名 //インターフェイスでは定数のみ使用できます。変数は使用できません

例:

クラスA{
const TAX_RATE=0.08;
関数 給与税($salary){
return $salary*self::TAX_RATE;
}
}
$a=新しいA();
echo $a->paytax(100);

注:
1. 定数はサブクラスに継承できます
2. 定数はオブジェクトではなく、特定のクラスに属します

Bell のテクノロジー ブログからの抜粋

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478256.html技術記事学習内容: 抽象クラス、インターフェイス、final、クラス定数 1、抽象クラス (抽象) 実際の開発プロセスでは、以前に学習した一部の親など、インスタンス化する必要のないクラスもあります...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

See all articles