11. クラスの継承
オブジェクト指向の 3 つの重要な特徴の 1 つとして、継承はオブジェクト指向の分野で非常に重要な役割を果たします
聞いたことがないようです。オブジェクト指向言語の継承はサポートされていません。継承は、PHP5 のオブジェクト指向プログラミングの重要な機能の 1 つであり、以前に定義された 1 つ以上のクラスからデータと関数を継承し、新しいデータと関数を入力して再定義できる新しい派生クラスを作成することを指します。クラスの階層または階層を確立する。簡単に言うと、継承とは、子
クラスが親クラスのデータ構造とメソッドを自動的に共有する仕組みです。これはクラス間の関係です。クラスの
を定義して実装する場合、既存のクラスに基づいて実行したり、既存のクラスで定義されたコンテンツを
独自のコンテンツとして使用したり、新しいコンテンツを追加したりすることができます。たとえば、現在、クラス「person」があり、このクラスには
2 つのメンバー属性「名前と年齢」と 2 つのメンバー メソッド「話し方と歩き方」が含まれています。
プログラムには学生クラスが必要です。 , 学生も人間なので、学生もメンバー属性「名前と年齢」とメンバー
メンバーメソッド「話し方と歩き方」を持っているので、このクラスを継承した上で学生クラスを来させることができます。
学生クラスは人間のすべての属性を継承します。学校の属性はまだ残っているため、これらのメンバー属性
とメソッドを再宣言する必要はありません。作成した生徒クラスには、人間から受け継いだ属性やメソッドに加えて、生徒固有の「学校の属性」や「学習メソッド」を加えた、
こんな生徒がいます。クラスの継承は「拡張」とも呼ばれます。上記のことから、人間には 2 つの元の属性と 2 つのメソッドがあることがわかります。メソッド
、新しい学生クラスが拡張されます。
継承メカニズムを通じて、既存のデータ型を使用して新しいデータ型を定義できます。定義された新しいデータ型
には、新しく定義されたメンバーだけでなく、古いメンバーも含まれます。新しいクラスの派生に使用される既存のクラスを基本
クラスと呼び、親クラスやスーパークラスとも呼ばれます。既存のクラスから派生した新しいクラスは派生クラスと呼ばれ、サブクラスとも呼ばれます。
ソフトウェア開発では、クラスの継承により、作成されたソフトウェアがオープンで拡張可能になり、オブジェクトとクラスの作成が簡素化され、コードの再現性が向上します。継承を使用して、
はクラスの標準的な階層構造を提供します。クラスの継承関係により、公開機能を共有できるため、ソフトウェアの再利用性が向上します。
C 言語では、派生クラスは 1 つの基本クラスまたは複数の基本クラスから派生できます。 1 つの基本クラスから派生した継承は単一継承と呼ばれ、複数の基本クラスから派生した継承は多重継承と呼ばれます。
しかし、PHP と Java 言語には多重継承はなく、単一継承のみです。つまり、クラスは
1 つのクラスからのみデータを直接継承できます。これを単一継承と呼びます。
例:
以下は「human」クラスの抽象化です
コード スニペット
コードをコピーします
コードは次のとおりです
//「person」クラスを親クラスとして定義しますclass person{ //以下は person のメンバー属性ですvar $name; //人の名前
var $sex ; //人の性別var $age; //人の年齢
//属性名 $name, 性別に値を割り当てるコンストラクター メソッドのパラメーターを定義します。 $性別と年齢 $age
function __construct($ name, $sex, $age){
$this->name=$name;
$this->sex=$sex; >$this->age=$age;
}
//この人の話し方は、自分の属性を伝えます
function Say() {
echo "私の名前は: "。 $this->name." 性別: ".$this->性別。" 私の年齢: ".$this->age."
"; >
ここでは、次のように継承を使用しない場合、「学生クラス」を作成します。 コード スニペット
コードをコピー
コードは次のとおりです:
//「人間」クラスを親クラスとして定義します
class Student{
//以下はその人のメンバー属性です
var $name; //その人の名前
var $sex; //人の性別
var $age; //生徒の学校の属性
//コンストラクターパラメータを属性名として定義します$名前、性別 $sex 、年齢 $age が割り当てられます。
function __construct($name="", $sex="", $age="", $school=""){
$this->名前=$名前;
$this->年齢=$年齢;
$this->学校=$学校; >//この人の話し方、自分の属性を伝える
function Say() {
echo "My name is: ".$this->name." Gender: ".$this -> sex." 私の年齢は: ".$this->age."
"
}
//この生徒は
関数をどのように学習するか() {
echo "My名前は: ".$this->name." 私は ".$this->school."
";
}
}
// サブクラスを定義します " Student class" を使用して "extends" キーワードを使用して "person" クラスを継承します
class Student extends Person{
var $school; //生徒がいる学校の属性
//このメソッドは学生が勉強する
functionstudy() {
echo "私の名前は: ".$this->name." 私は ".$this->school." で勉強しています。
";
}
}
上記の "Student" クラスの定義を通じて、Student クラスは "extends" キーワードを使用して、Person クラス
のすべてのメンバー属性を結合します。すべてのメンバーメソッドを継承し、学校のメンバー属性「school」を拡張し、
学習メソッド「study()」を拡張します。現在、サブクラス「Student」と、このクラス インスタンスを使用して作成されたオブジェクトには、次の