継承
通常、他の既存のクラスと同じ変数と関数を持つクラスが必要です。実際、すべてのプロジェクトで使用される共通のクラスを定義し、各特定のプロジェクトに適応するようにこのクラスを継続的に強化することは良い練習になります。これを簡単にするために、クラスを他のクラスから拡張できます。拡張クラスまたは派生クラスは、その基本クラスのすべての変数と関数を所有し (これは、誰も死なないことを除いて「継承」と呼ばれます)、派生クラスで定義されたすべての部分を含みます。クラス内の要素を減らすことはできません。つまり、既存の関数または変数を登録解除することはできません。拡張クラスは常に単一の基本クラスに依存します。つまり、多重継承はサポートされません。クラスを拡張するには、キーワード「extends」を使用します。
コードをコピーする コードは次のとおりです。
class test {
public function __construct() {
}
public function name() {
$this->xname('John')
}
private function showName ($name) {
echo 'テストでの私の名前は '.$name;
}
}
class extendTest extends test {
public function __construct() {
parent::__construct()
}
private function showName( $name) {
echo 'extendTest の名前は '.$name;
}
$test = new extendTest();
;上の例では、Cart クラスのすべての変数と関数に加えて、追加の変数 $owner と追加の関数 set_owner() を備えた Named_Cart という名前のクラスを定義しています。これで、名前付きショッピング カートが通常の方法で作成され、ショッピング カートの所有者を設定および取得できるようになります。通常のショッピング カート クラスの関数は、名前付きショッピング カート クラスでも引き続き使用できます:
$ncart = new Named_Cart; // 新しい名前付きショッピング カートを作成します
$ncart->set_owner(" kris"); // ショッピング カートに名前を付けます
print $ncart->owner // ショッピング カートの所有者の名前を出力します
$ncart->add_item("10", 1); // (ショッピング カートから継承された関数)クラス)
?>
これは「父と子」の関係とも言えます。クラス (親クラス) を作成し、extends を使用して親クラスに基づいて新しいクラス (子クラス) を作成します。この新しいサブクラスを使用して、このサブクラスに基づいて別のクラスを作成することもできます。
注:
クラスは定義された後にのみ使用できます。 Cart クラスを継承するために Named_Cart クラスが必要な場合は、最初に Cart クラスを定義する必要があります。 Named_Cart クラスに基づいて別の Yellow_named_cart クラスを作成する必要がある場合は、最初に Named_Cart クラスを定義する必要があります。簡単に言うと、クラス定義の順序は非常に重要です。
コードをコピーします。 コードは次のとおりです。
class Person{
protected $name;//protected アクセス許可はサブクラス内でアクセスできますが、外部からはアクセスできません
protected $age;
function __construct($name,$; age ,$sex){
$this->name=$name;//thisを使用すると、nameが宣言されていない場合でも、再度宣言されます
$this->age=$age;
$this- > sex=$sex;
echo "###############";
public function Say(){
echo "私の名前: {$this->name} 、私の年齢 {$this->age}:、私の性別: {$this->sex}
";
}
protected function Eat(){
echo "wwwwwwwwwwwwwwwww
" ;
}
function run(){
}
protected $name;//保護されたアクセス許可はサブクラス内でアクセスできますが、外部からはアクセスできません
protected $age;
protected $sex
}
//Inherited
class Student extends Person{
var $school;
function __construct($name,$age,$sex,$school){
parent::__construct();//親クラスのコンストラクター メソッドを呼び出します
$this->school= $school ;
}
//say() メソッドをオーバーロードして拡張します
protected function Say(){//親クラスは public を使用します。サブクラスの権限は親クラスより低くすることはできず、親クラスと同じ権限を持つことができます。親クラス
/ /person::say();//親クラスのsay()メソッドを呼び出します
parent::say();//親クラスのsay()メソッドを呼び出します。parentは親を表しますクラス名を変更し、親クラス名が変更された場合にも使用できます。
echo "私の学校 {$this->school}
";//www.php.cn
}
function Study(){
echo "{$this->name} in Study< br/>";
}
}
$s=新入生("張さん",23,"男性");
$s->say();
$s->study() ;
* 1. オブジェクト指向の 3 つの大きな特徴の 1 つ
*
* 2. オープン性とスケーラビリティ
*
* 3. コードの再利用性を高める
*
* 4. ソフトウェアの保守性を向上させる
*
* 5.継承とは、サブクラスを使用して親クラスを「拡張」することです
*
* C++ は多重継承に属し、同じクラスは複数の親クラスを持つことができます
*
* PHP と JAVA は単一継承に属し、同じクラスは 1 つの親クラスのみを持つことができます
*
* 多重継承か単一継承か、両方複数のサブクラスを持つことができます
*
* 2つのクラスを設計する際に共有できるメンバーがあれば、共有した内容を単独で基底クラスとして使用します
*
* 1. クラス継承の適用
*
* 1.サブクラスを作成し、extends キーワードを使用して親クラスを継承 (拡張) します
*
* 2. サブクラスは、メンバー属性メソッド、構築メソッドなどを含む、親クラスからすべてのコンテンツを継承できます。 サブクラスで使用できます
*
* 2. アクセス型制御
*
* サブクラスは親クラスからすべてを継承できますが、プライベートメンバーはこのクラス内でのみ使用でき、サブクラス内では使用できません
*
* カプセル化を使用すると、内部を作成することしかできません。独自のクラスをアクセス可能にするだけでなく、サブクラスでも使用できるようにします。ただし、クラスの外部のアクセス許可を保護に設定するだけです
*
*
*
* 3. サブクラス 親クラスのメソッドをオーバーロードします
*
* 1. サブクラスは親クラスと同じメソッド名を宣言できます。つまり、サブクラスは同じ名前の親クラスのメソッドをオーバーライドします
*
* 2. サブクラスのメソッドは親クラスと同じ名前を持ちますメソッドの拡張
*
* 3. 親クラスでオーバーライドされたメソッドをサブクラスで呼び出します
* 親クラス名::メソッド名() を使用します
*
* 4. サブクラス内で次のように記述しますコンストラクター メソッド。親クラスにコンストラクター メソッドがある場合は、必ず親クラスでオーバーライドされたコンストラクター メソッドを 1 回呼び出してください。
*
* 注: サブクラスのオーバーロードされたメソッドは、親クラスよりも低いアクセス権を持つことはできません。サブクラス 権限は拡大できますが、削減することはできません)