国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ php教程 php手冊(cè) PHP オブジェクト指向の 3 つの主要な特徴を?qū)W習(xí)します (抽象化、カプセル化、継承、ポリモーフィズムを完全に理解します)。

PHP オブジェクト指向の 3 つの主要な特徴を?qū)W習(xí)します (抽象化、カプセル化、継承、ポリモーフィズムを完全に理解します)。

Jun 13, 2016 pm 12:00 PM
php ポリモーフィズム 勉強(qiáng) 物體 カプセル化 抽象的な 特徴 理解する 継承する のために

オブジェクト指向オブジェクトの 3 つの主要な特徴: カプセル化、継承、およびポリモーフィズム まず、抽象化について簡(jiǎn)単に理解しましょう:
先ほどクラスを定義したとき、実際にオブジェクトのクラスの共通の屬性と動(dòng)作を抽出しました。物理モデル (テンプレート)、問(wèn)題を研究するこの方法は抽象化と呼ばれます

1. カプセル化
カプセル化とは、抽出されたデータとデータに対する操作をカプセル化することです。は內(nèi)部的に保護(hù)されており、プログラムの他の部分からの承認(rèn)された操作 (メソッド) のみがデータに対して操作できます。
php は 3 つのアクセス制御修飾子を提供します。
public はグローバルを意味し、このクラス內(nèi)、クラス外、およびサブクラスからアクセス可能です。
protected は保護(hù)されていることを意味し、このクラスまたはサブクラスのみがアクセスできます。
private はプライベートを意味し、のみアクセスできますこのクラス內(nèi)でアクセスできます
上記の 3 つの修飾子はメソッドとプロパティ (変數(shù)) の両方を変更できます。メソッドにアクセス修飾子がない場(chǎng)合は、デフォルトで public を指定する必要があります。この方法もあります。 PHP4 では var $name を記述します。これはパブリック屬性を意味します。
例:

コードをコピーします。 コードは次のとおりです。 :


class person{
public $name;
private $salary; __construct; $age ,$salary){
$this->name=$name;
$this->salary=$salary;
public function showinfo(){
//これは、3 つの修飾子すべてがこのクラス內(nèi)で使用できることを意味します
echo $this->name."||".$this->age." | |".$this->salary;
}
}
$p1=new Person('Zhang San',20,3000);
//これはクラス外ですので、次のメソッドを使用すると、年齢と給與にアクセスするときにエラーが報(bào)告されます。


それでは今やりたいのは、外部からprotected要素やprivate要素やメソッドにアクセスする場(chǎng)合はどうするかということです。 通常のアプローチは、パブリック関數(shù)を通じてこれらの変數(shù)形式にアクセスすることです。
public function setxxxx($val){
$this->gt;xxxx=$val;
public function getxxxx(){
return $this-> >salary; // 拡張機(jī)能: ユーザー名などの判斷など、ここでいくつかのメソッドを呼び出し、それが正しい場(chǎng)合にのみアクセスを許可できます

}
$p1->getsalary();
If protected および private にアクセスするには、次のメソッドを使用することもできますが、これらは推奨されません。
__set() および __get ()
__set() 値を protected 屬性または private 屬性に割り當(dāng)てます。
__set( $name,$val);
__get() は protected または private の値を取得します
__get($name) ;
例:



コードをコピーします

コードは次のとおりです:


クラスtesta{
protected $name;
//すべての屬性を管理するには __set() を使用します
public function __set($pro_name,$pro_val){

//上記の $pro_name と $pro_val はカスタマイズできます//$this->pro_name 以下は確立されており、変更できません$this->pro_name =$pro_val; } //すべての屬性値を取得するには __get() を使用しますパブリック関數(shù) __get($pro_name){

if(isset($pro_name)){
return $this->pro_name;
} else {
return null; ??>}
}
$n1=new testa();
//通常、保護(hù)された屬性はクラス外からアクセスできませんが、上記のメソッドを使用して操作できます
$n1- >name='小三';
echo $n1->name; >


// を使用することはお?jiǎng)幛幛扦蓼护蟆?it

2. 継承

まず例を見(jiàn)てみましょう:



コードをコピーします

コードは次のとおりです:


class Pupil{
public $name;
protected $age; public function getinfo(){ echo $this-> name.'||'.$this->age;
}
public function testing(){

echo 'this is students'; } } class 卒業(yè)生{ public

protected $age;

public function getinfo(){
echo $this->
}
public function testing(){
echo 'this is Grade';
}
}
?> ;


上記からわかるようにたとえば、複數(shù)のクラスに共通の屬性やメソッドが多い場(chǎng)合、コードの再利用性が高くなく、コードが冗長(zhǎng)になります。 CSS での処理方法を考える
解決策: Inherit



Copyコード

コードは次のとおりです:


class Students{
public $name;
public $age;
public function __construct($name,$age){
$this- >name=$name;
$this->age=$age;
}
public function showinfo(){
echo $this->name.'||'.$ this->age;
}
}
class Pupil extends Students{
function testing(){
echo '生徒 '.$this->name.' はテスト中です';
}
}
class Grade extends Students{
function testing(){
echo 'Graduate '.$this->name.' is testing'; >}
$stu1=new Pupil('張三',20);
$stu1->showinfo();
echo '
'; >testing();
?>


上記からわかるように、継承は親クラスをパブリックに拡張し、親クラスで保護(hù)されるサブクラス ( BaseClass) 屬性とメソッドは継続され、プライベートな屬性とメソッドを継承できません
構(gòu)文構(gòu)造:

class 親クラス名 {}
class サブクラス名 extends 親クラス名 {}
詳細(xì):
1 、サブクラスは 1 つの親クラスのみを継承できます (ここでは直接継承を指します)。複數(shù)のクラスの屬性とメソッドを継承したい場(chǎng)合は、マルチレベル継承
を使用できます。 例:



コードをコピーします

コードは次のとおりです。 class A{

public $name='AAA'; ??>}
クラス B は A を拡張します{
public $age=30;
クラス C は B を拡張します{}
$p=new C(); ->name;//ここでは AAA が出力されます
?>2. サブクラス オブジェクトを作成するとき、その親クラスのコンストラクターはデフォルトでは自動(dòng)的に呼び出されません。 > 例:
class A{
public function __construct(){
echo 'A';
}
}
class B extends A{
public function __construct() {

echo 'B ';
}
}
$b=new B();//B にコンストラクターがない場(chǎng)合は、 の A が出力されます。 3. サブクラス內(nèi)の親クラスのメソッドにアクセスする必要がある場(chǎng)合 (コンストラクターおよびメンバー メソッドの修飾子がプロテクトまたはプライベートである場(chǎng)合)、親クラス::メソッド名または親:: を使用できます。完了するメソッド名 [ここで親と前の前提] 受け取った自分自身はすべて小文字で、エラーは大文字で報(bào)告されます]
class A{
public function test(){
echo 'a_test';
}
}
class B extends A{
public function __construct(){
//両方のメソッドが機(jī)能します
A::test()
parent:: test();
}
}
$b=new B();
5. サブクラス (派生クラス) のメソッドが親クラスのメソッドとまったく同じである場(chǎng)合 ( public、protected)、これをメソッド カバレッジまたはメソッド オーバーライドと呼びます。

3. ポリモーフィズム

例:



をコピーします。 code

コードは次のとおりです。

class Animal{
public $name;
public $price; cry(){

echo 'i don't know' ; } } class Dog extends Animal{ //オーバーライド、オーバーライド

関數(shù) cry(){

echo 'Wang Wang!';
Animal::cry();//ここではエラーは報(bào)告されず、親クラスの cry() は正しく実行できます。 ??>$dog1=new Dog();
$dog1->cry( );

概要:
1.すべてのサブクラスにはメソッドがありますが、親クラスがメソッドの書き方を知らない場(chǎng)合は、サブクラスがそのメソッドをオーバーライドできるようにすることができます。メソッドのオーバーライド (書き換え) では、サブクラスのメソッド名とパラメーターの數(shù)が正確である必要があります。同じ
2. サブクラスが親クラス (protected/public) のメソッドを呼び出したい場(chǎng)合は、親クラス名::メソッド名または親::メソッド名を使用できます
3. メソッドの書き換えを?qū)g裝する場(chǎng)合、アクセス修飾子は異なっていても構(gòu)いませんが、サブクラス メソッドのアクセス権は親クラス メソッドのアクセス権以上でなければなりません (つまり、親クラス メソッドのアクセス権を減らすことはできません)
たとえば、親クラスの public 関數(shù) cry(){} とサブクラスの protected 関數(shù) cry(){} がエラーを報(bào)告する場(chǎng)合、
ただし、サブクラスのアクセス許可は次のように拡大できます。
Parentクラスプライベート関數(shù)cry(){} サブクラス保護(hù)関數(shù)cry(){}は正しく実行できます
拡張:
メソッドオーバーロード(オーバーロード)
基本概念:関數(shù)名は同じですが、パラメータの數(shù)が異なります同じ関數(shù)を呼び出した場(chǎng)合でも、異なる関數(shù)を區(qū)別できます。
PHP5 ではオーバーロードもサポートされていますが、それでも他の言語(yǔ)とは大きく異なります。PHP では複數(shù)の関數(shù)を定義できません。同じ名前の
PHP5 は強(qiáng)力な「マジック」関數(shù)を提供します。これらのマジック関數(shù)を使用すると、関數(shù)をオーバーロードできます。
ここでは、オブジェクトがメソッドを呼び出すとき、およびメソッドが呼び出されない場(chǎng)合は __call に移動(dòng)する必要があります。存在する場(chǎng)合、プログラムは自動(dòng)的に __call を呼び出します
[公式には非推奨]
PHP には次のマジック定數(shù)があります: __LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ など
例:


コードをコピー

コードは次のとおりです:


class A{
function test1($p){
echo 'test1
';
function test2($ p){
echo 'test2
';
}
function __call($method,$p){
//ここで $p は配列であり、上記の 2 つの変數(shù)名前はカスタマイズできます
if($method == 'test'){
if(count($p)==1){
$this->test1($p); else if(count($p)==2){
$this->test2($p)
}
}
}
}
$a=new A ();
$a->test(3,5);


このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPで現(xiàn)在のセッションIDを取得する方法は? PHPで現(xiàn)在のセッションIDを取得する方法は? Jul 13, 2025 am 03:02 AM

PHPで現(xiàn)在のセッションIDを取得する方法は、session_id()関數(shù)を使用することですが、session_start()を呼び出して正常に取得する必要があります。 1。Session_start()を呼び出してセッションを開(kāi)始します。 2。Session_Id()を使用してセッションIDを読み取り、ABC123DEF456GHI789に似た文字列を出力します。 3.返品が空の場(chǎng)合は、Session_start()が欠落しているかどうか、ユーザーが初めてアクセスするか、セッションが破壊されるかを確認(rèn)します。 4.セッションIDは、ロギング、セキュリティ検証、およびクロスレクエスト通信に使用できますが、セキュリティに注意する必要があります。セッションが正しく有効になり、IDが正常に取得できることを確認(rèn)してください。

PHPストリングからサブストリングを取得します PHPストリングからサブストリングを取得します Jul 13, 2025 am 02:59 AM

PHP文字列からサブストリングを抽出するには、Substr()関數(shù)を使用できます。これはSyntax substr(String $ string、int $ start、?int $ length = null)であり、長(zhǎng)さが指定されていない場(chǎng)合は、端まで傍受されます。中國(guó)語(yǔ)などのマルチバイト文字を処理する場(chǎng)合、MB_Substr()関數(shù)を使用して、文字化けコードを避ける必要があります。特定のセパレーターに従って文字列を傍受する必要がある場(chǎng)合は、exploit()を使用するか、strpos()とsubstr()を組み合わせて、ファイル名拡張子またはドメイン名を抽出するなどの実裝できます。

PHPコードの単體テストをどのように実行しますか? PHPコードの単體テストをどのように実行しますか? Jul 13, 2025 am 02:54 AM

unittestinginphpinvolvevidevifignivision like like fike fikionsionsormethodstocatchsearlyandensureliablerefactoring.1)setupphpunitviacomposer、createatestdirectory、and configureautoloadandphpunit.xml.2)

文字列をPHPの配列に分割する方法 文字列をPHPの配列に分割する方法 Jul 13, 2025 am 02:59 AM

PHPでは、最も一般的な方法は、exploit()関數(shù)を使用して文字列を配列に分割することです。この関數(shù)は、指定された區(qū)切り文字を介して文字列を複數(shù)の部分に分割し、配列を返します。構(gòu)文はエクスプロイト(セパレーター、文字列、制限)であり、セパレーターはセパレーターであり、文字列は元の文字列であり、制限はセグメントの最大數(shù)を制御するオプションのパラメーターです。たとえば、$ str = "Apple、Banana、Orange"; $ arr = Explode( "、"、$ str);結(jié)果は["apple"、 "banaです

JavaScriptデータ型:プリミティブ対參照 JavaScriptデータ型:プリミティブ対參照 Jul 13, 2025 am 02:43 AM

JavaScriptデータ型は、プリミティブタイプと參照タイプに分割されます。プリミティブタイプには、文字列、數(shù)字、ブール、ヌル、未定義、シンボルが含まれます。値は不変であり、コピーは値を割り當(dāng)てるときにコピーされるため、互いに影響を與えません。オブジェクト、配列、関數(shù)などの參照タイプはメモリアドレスを保存し、同じオブジェクトを指す変數(shù)は互いに影響します。 TypeofとInstanceOFを使用してタイプを決定できますが、TypeOfNullの歴史的な問(wèn)題に注意してください。これらの2種類の違いを理解することは、より安定した信頼性の高いコードを書くのに役立ちます。

c c Jul 15, 2025 am 01:30 AM

STD :: Chronoは、現(xiàn)在の時(shí)間の取得、実行時(shí)間の測(cè)定、操作時(shí)點(diǎn)と期間の測(cè)定、分析時(shí)間のフォーマットなど、時(shí)間の処理にCで使用されます。 1。STD:: Chrono :: System_Clock :: now()を使用して、現(xiàn)在の時(shí)間を取得します。 2。STD:: CHRONO :: STEADY_CLOCKを使用して実行時(shí)間を測(cè)定して単調(diào)さを確保し、DurateR_CASTを通じてミリ秒、秒、その他のユニットに変換します。 3。時(shí)點(diǎn)(Time_Point)と期間(期間)は相互運(yùn)用可能ですが、ユニットの互換性と時(shí)計(jì)エポック(エポック)に注意を払う必要があります

PHPは環(huán)境変數(shù)をどのように処理しますか? PHPは環(huán)境変數(shù)をどのように処理しますか? Jul 14, 2025 am 03:01 AM

toaccessenvironmentvariablesinphp、usegetenv()または$ _envsuperglobal.1.getenv( 'var_name')retievessaspecificvariable.2。$ _ en v ['var_name'] AccessESSESESSVARIABLESIFVARIABLES_ORDERINPHP.INIINCLUDES "E" .SETVARIABLESVIACLIWITHVAR = ValuePhpscript.php、inapach

コメントする理由:PHPガイド コメントする理由:PHPガイド Jul 15, 2025 am 02:48 AM

phphastthreecommentStyles://,#forsingle-lineand/.../formulti-line.usecommentstoexplainwhycodeexists、whatittodo/fixmeitemsanddisablecodecodemcodecodecodecodemprianydedebugging.avoidoversingingsingingsingingsingingsingingsingingsingingsimmentingsimmentingsimplelatic.decratecentecentic.

See all articles