オブジェクト指向プログラミングの多型とカプセル化の三つの特徴----

多型

何が多型です。

同じ方法、同じ論理的実行の呼び出しによって得られたオブジェクトの異なるクラスの例。

多型は、最終的な実行に反映しました

多型のコンセプトは、彼らの特定のクラスに関係なく、彼らの共通の属性や行動によって、オブジェクトが操作してアクセスする方法を示します

多型は、実際には2つの意味を継承するために装着されている:「変更」と「拡張」自体は、お使いのバージョンの上に拡張するための自動選択機構が存在しなければならないことを意味し

それは二つの意味が達成できない、したがって、多型ではありません

そこで、多型は、基本的に継承の実装の詳細です:だから多型とカプセル化、継承、並んで二つの概念側は、明らかに適切ではありませんしましょう

 

H2Oクラス:
    __init __ DEFは(自己、名前、温度):
        self.name名= 
        self.temperature温度= 
    DEFのturn_ice(セルフ):
        0 <self.temperature IF:
            印刷( '低すぎる温度は〔%のS]凍結されています' self.name%)
        のelif self.temperature> 0とself.temperature <100:
            プリント( '[%S]水に液化' self.nameの%)
        のelif self.temperature> 100:
            印刷(「[%S]温度すぎます'self.nameの%)に高い水蒸気

:クラス水(H 2 O)
    渡し
クラス氷(H 2 O)を:
    合格
:水蒸気(H 2 O)クラス
    パス

水'、25)W1 =水( ' 
I1 =氷(' ICE」 -20)
S1 =蒸気( '蒸気'、3000)

W1。turn_ice() turn_ice() 
#のi1.turn_ice()
#のs1.turn_ice()
 
デフFUNC(OBJ):
    obj.turn_ice()

FUNC(I1)

第二に、パッケージ

①袋は、それ自体がパッケージされており、ベースに

②クラスで定義されているプラ​​イベート、唯一のクラス内で使用し、外部にアクセスすることはできません

(必須慣習のようなものではありません)、アンダースコアが外部と呼ばれることなく、単一のプロパティ

それは二重下線属性の始まりである場合には内部の名前が変更され

._クラス名を持つ__starを呼び出します 

③内部と外部との間の明確な区別、実現ではなく、その外側の内部ロジック、および使用される外部のロジックに、パッケージ内部にアクセスするための口実を提供すること(これは真のパッケージです) 

人々は、クラス:
    _star = '地球の
    'liufuren' __end = 
    DEF __init __(自己、ID、名前、年齢、給与):
        self.id ID = 
        self.name名= 
        自己.__ =年齢年齢は
        給与が= self.salary 

    (DEF GET_IDセルフ):
        印刷(%のself.id) "私はプライベートメソッドだ、ああ、私はIDは[%S]見つける" 

P1 =ピープル(412 825、 "ジン陵"、 '18'、10000)
印刷(p1._starを)
印刷(p1._People__end)

  

インターフェイスへのアクセスを作成することにより、

クラスルーム:
    デフ__init __(自己、名前、所有者、幅、長さ、高):
        self.name =名前
        self.owner =所有者の
        自己.__幅=幅
        自己.__長さ=長さの
        自己.__ higth =ハイ

    デフtell_area(自己):
        自己.__長さを返す*自己.__幅

R1 =ルーム( '卫生间'、 '刘'、50,50,50)
プリント(r1.name) 印刷(R1 .__幅)#报错哦
プリント(r1.tell_area())クラスルーム:
    デフ__init __(自己、名前、所有者、幅、長さ、高):
        self.name =名前
        self.owner =所有者の
        自己.__幅=幅
        自己.__長さ=長さの
        自己.__ higth =高

    tell_area DEF(自己):
        戻り値の長さ*セルフセルフ.__ .__幅
#アクセス機能は、
  DEF get_width(セルフ):
     印刷(セルフ.__幅)
R1 =ルーム( 'トイレ'、 '劉'、50,50,50) を印刷(R1 .nameの) #印刷(R1 .__幅)#エラーああ プリント(r1.tell_area())

  

それは頻繁に通話が必要な場合がありますので、実際には、上記の例の長さ、幅、高は、私有財産を書かれていません、

プライベート属性になり、単独の低い書き込みインターフェース(アクセス機能を)持っていた、プログラムがだらけになります。

、最初のプログラムのニーズを書き込む前に、すべてのそれに背の高い、カプセル化、ポリモーフィズムを考えるために継承された、いわゆる上入れないで何を考えて

代わりに、良いよりも害。

概要:オブジェクト指向の利点

クリア内外封止することにより①

②言語サポート正規化された設計のレベルで継承+多型を介して

  

おすすめ

転載: www.cnblogs.com/dabai123/p/11575044.html