オブジェクト指向の継承

受け継ぎます

何継承されています

継承は関係が何であるかを説明している2つのオブジェクト間の関係、何ですか

例えばマクダル、ペイジは、豚だけたてがみ朱あり、

プログラムでは、クラスとクラス間の継承関係を記述する

例えば、Bは、既存のメソッドとプロパティで直接使用することができ、Bを継承しました

サブクラスと呼ばれ、Bは、ベースクラスと呼ばれる、親クラスと呼ばれています

なぜ使用の継承:

一方の当事者に指示することができる継承当事者はいくつかのことを継承しています

その目的は、既存のコードを再利用することで再利用性を向上してきました

継承を使用する方法

構文:

クラスのクラス名(親クラスの名前):
    クラスの内容を
    
同時に複数の親クラスを継承することができ、サブクラスに#のpython

 

クラスA:
    DEF __init __(自己):
        self.name = "こんにちは" 
        self.age = 10 
    DEF say_hello(自己):
        プリント( "say_hello") 
クラスB(A):
    パス

B = B()
プリント(b.name )
プリント(b.age)
b.say_hello()

要約:

具体的ではない、不明瞭な、漠然とした、読んでいません

プロセスサブクラスの複数の同じ部分、抽出、新しいクラスを形成し、また、抽象として知られているプロセス

継承の適切な使用:

1.最初の抽象継承

2.本来の機能を拡張または変更、既存のクラスを継承しました

 

クラスC:
    デフ__init __(自己、名前、年齢):
        self.name =名前
        self.age =年齢は

    DEF(自己)say_hello:
        印刷( "こんにちは")

クラスA(C):
    デフsay_hi(自己):
        印刷(」 HI ")
        
A = A("ジェイソン」、23)
a.say_hello()
a.say_hi()


クラスB(C):
    パス

B = B( "エゴン"、12)
プリント(b.name)
プリント(B。年齢)

物件検索順序

クラスA:
    テキスト= "母" 

クラスB(A):
    テキスト= "heihei" 
    通過

B = B()
b.text = "西渓" 

プリント(b.text)

オブジェクト自体 - >クラスは - >親クラスの親 - - >親を検索する>オブジェクト

派生

サブクラスは異なるコンテンツの親クラスで発生した場合、それは派生クラスと呼ばれるサブクラス化

、両方が通常クラスを派生され、通常のサブクラスは、いくつかの新しいコードを記述します、と親は正確に同じにすることはできません

だから、派生クラスは、サブクラスを参照します

網羅

また、書き換えオーバーライドとして知られています

サブカテゴリーは、親クラスのプロパティやメソッドの名前と完全に一致した場合に表示され

クラスMYLIST(リスト):
    デフ__init __(自己、else_type):
        スーパー().__のinit __()
        self.else_type = else_type 

    デフ(自己、オブジェクト)追加:
        タイプ(オブジェクト)== self.else_type場合:
            。super()を追加(オブジェクト)
        他:
            印刷( "请输入指定的类型")


my_listという= MYLIST(INT)

my_list.append(12)
my_list.append(12)
my_list.append(12)
my_list.append(12)
my_list.append(12 )
my_list.append( "asdasd")
プリント(my_listという)

彼は強調強調しました:

既存のクラスを継承し、あなたが親クラスのinitメソッドをオーバーライドするときは、必要なパラメータの親クラスに渡して、初期化メソッドの最初の行の親クラスの初期化メソッドを呼び出す必要があります

組み合わせ

これは、2つのオブジェクト間の関係があるものが何であるかを説明し、また関係です

例えば、学生が携帯電話を持って、ゲームキャラクタは、特定の機器を持っています

別のオブジェクトのプロパティとしてオブジェクト、(両方の何もの)

組み合わせの目的:

また、既存のコードを再利用します

継承を使用するときは:最後に2つのクラス間の関係の分析は、ありません:どのような関係とは何ですか

二つのクラスの間には有意な関係が存在しない場合は、同じに属さない:の組み合わせを使用するとき

さらに、比較階層組成、​​結合度が低いです

クラスA:
    DEF __init __(自己、OBJ):
        self.obj = OBJ 

クラスB:
    DEF __init __(自己):
        渡す

    デフsay_hi(自己):
        プリント( "say_hi")
B = B()

A = A(B)
A .obj.say_hi()

ダイヤモンドの継承

まず、明確なPythonのサポート多重継承

 

追加:新しいスタイルのクラスとクラシック

任意のクラスでのpython3は、直接的または間接的にオブジェクトに継承されます

新しいクラスは、明示的または暗黙的なオブジェクトが呼び出された新しいクラスへのクラスから継承、新しいクラスのすべてがのpython3します

クラシックは、唯一python2で発生し、Objectのサブクラスでもありません

 

幅広の共通の親クラスに直面したダイヤモンドの継承、新しいクラス、第1の深さ、がある場合

新しいカテゴリは、深さ優先であります

 

 

おすすめ

転載: www.cnblogs.com/cherish937426/p/11247057.html