Pythonのオブジェクト指向の継承の例

オブジェクト指向の三つの特徴

  1. パッケージ  に従って  強制属性  と  メソッド パッケージ  抽象に  クラス  での
  2. 継承 の実装コードを再利用するために、同じコードが書か繰り返す必要はありません
  3. 多型  の異なるオブジェクトは、異なる結果を生成し、同じメソッドを呼び出すコードの柔軟性を増加します

01.単一継承

相続、構文や機能の1.1概念

継承の概念サブクラスは  持っている  親クラス  のすべて  のメソッド  と  プロパティを

クラスの動物:

    DEF (自己を)食べる:
         プリント" 吃は" 

    デフ(自己を)飲む:
         印刷" " 

    デフ(自己)を実行します:
         印刷" " 

    デフ(自己)眠る:
         プリント" " 


クラスの犬:

    DEF 自己(食べる):
         プリント" " 

    デフ飲む(自己):
         プリント" ドリンク" 

    DEF RUN(セルフ):
         印刷" ファイル名を指定して実行" 

    DEF SLEEP(セルフ):
         印刷" スリープ" 

    DEF 樹皮(セルフ):
         印刷" 樹皮" 

オブジェクトを作成-犬はオブジェクト 
wangcai =を犬()

wangcai.eat()
wangcai.drink()
wangcai.run()
wangcai.sleep()
wangcai.bark()
動物犬の継承と発展を使用しないでください
1)相続の構文
クラスのクラス名(親名):

    パス
クラス動物:

    DEF EAT(セルフ):
         印刷" 食べ--- " 

    DEF ドリンク(セルフ):。。
         印刷" ドリンク--- " 

    DEF RUN(セルフ):
         印刷" ラン--- " 

    DEFのSLEEP (自己):
         印刷スリープ--- 


クラス・ドッグ(動物): 

    子クラスの親クラスのすべてのプロパティとメソッドがある
    #はDEF(自己を)食べる:
    #の     印刷(「食べる」)
    #1
     #1 。DEFドリンク(セルフ。 ): 
         印刷( "ドリンク") #
    
     DEF RUN(セルフ):      プリント( "ファイル名を指定して実行") #DEFのSLEEP(セルフ):      印刷( "スリープ")DEF 樹皮(セルフ):
         印刷" 樹皮" オブジェクトを作成-オブジェクト犬 
wangcai = 犬()
wangcai.eat()
wangcai.drink()
wangcai.run()
wangcai.sleep()
wangcai.bark()
    
        
    

    


動物犬の継承と発展を使用して
  • サブクラスが  から継承  親クラス、あなたが直接することができます  楽しむ  親クラスのメソッドは、再び開発する必要がパッケージ化されています
  • サブクラスは、  よるべきで  機能し、パッケージ  サブクラス固有のプロパティとメソッドを
2)用語
  • Dog クラスは  Animal 、クラスのサブクラスでAnimal クラスがある  Dog のクラスの親クラスDog からクラス  Animal クラス継承
  • Dog クラスは、  Animal クラスの派生クラスAnimal クラスである  Dog クラスベースクラスDog からクラス  Animal クラスは、派生します
推移3)継承
  • C クラス  B を持つクラスB クラスとから  A 、クラスの継承
  • その後、  C クラスがあります  B クラスをし、  A クラスのすべてのプロパティとメソッド

サブクラスは  あり   と  親の親クラス  内のすべてのパッケージの  プロパティ  と  メソッドを

クラス動物:

    デフを食べる(自己):
         プリント" 吃--- " 

    デフ飲む(自己):
         プリント" 喝--- " 

    デフ実行します(自己):
         印刷" 跑--- " 

    デフ睡眠(自己):
         プリント" 睡--- " 


クラス・ドッグ(動物):

    デフ樹皮(自己):
         プリント" 汪汪叫" 


クラスXiaoTianQuan(犬):

    デフフライ(セルフ):
         印刷" 私は飛ぶことができる" 


クラスキャット(動物):

    DEF キャッチ(セルフ):
         印刷" キャッチマウス" 

#は、神格化犬オブジェクトの作成 
= XTQをXiaoTianQuan() 

)(xtq.fly 
xtq.bark()
xtq.eat()

xtq.catch()
推移の継承

 

質問:神格化犬を  呼び出すことができる  Cat で定義されたクラス  catch の道を?

回答:できませんので、  神格化犬  や  Cat ない間の  継承  関係。

 

書き換えの1.2メソッド

  • サブクラスは  持っている  親クラス  のすべて  のメソッド  と  プロパティを
  • サブクラスが  から継承  親クラス、あなたが直接することができます  楽しむ  親クラスのメソッドは、再び開発する必要がパッケージ化されています

シナリオ

  • 場合  、親クラス  メソッドの実装はサブクラスのニーズを満たすことができない場合、この方法は、することができる  (オーバーライド)を書き換え

    

オーバーライド  親クラスのメソッドを2つのケースがあります。

  1. カバー  親クラスのメソッドを
  2. 親クラスのメソッドを  拡張します
1)親クラスのメソッドをカバー
  • 開発中の場合は、親クラスの実装  および  サブクラス実装完全に異なります
  • 使用することができます  カバーするために  、方法をサブクラスに 書き換えること  、親クラスの実装を

  特定の実装では、同等の  サブクラスは  定義  親クラスと実装として、同じ名前を

 実行時に、書き換えた後、ちょうど呼び出し  、サブクラスのメソッドを書き換え、もはや呼ばないだろう  親クラスのパッケージを

class Animal:

    def eat(self):
        print("吃---")

    def drink(self):
        print("喝---")

    def run(self):
        print("跑---")

    def sleep(self):
        print("睡---")


class Dog(Animal):

    def bark(self):
        print("汪汪叫")


class XiaoTianQuan(Dog):

    def fly(self):
        print("我会飞")

    def bark(self):
        print("叫得跟神一样...")


xtq = XiaoTianQuan()

# 如果子类中,重写了父类的方法
# 在使用子类对象调用方法时,会调用子类中重写的方法
xtq.bark()
覆盖父类方法

 

おすすめ

転載: www.cnblogs.com/huiyichanmian/p/11286342.html