物件導向程式設計之封裝 繼承和重寫

2021-09-22 21:39:41 字數 3476 閱讀 7728

封裝的含義:對屬性進行操作

將資料(屬性)和行為(方法)包裝到類物件中。在方法內部對屬性進行操作,早類物件的外部呼叫方法。這樣,無須關心方法內部的具體實現細節,從而隔壁了複雜度。

在類物件的內部通過訪問控制把某些屬性和方法隱藏起來,不允許在類物件的外部直接訪問,而是在類物件的內部對外提供公開的介面方法(例如getter和setter)以訪問隱藏的資訊。這樣,就對隱藏的資訊進行了保護。

class student(object):

def __init__(self):

self._score = 90

def get_score(self):

return self.__score

def set_score(self,score):

if 0 <= score <= 100:

self.__score = score

else :

raise valueerror("成績必須在0~100之間")

s = student()

s.get_score()

返回結果:90

s = student()

s.get_score(88)

print(s.get_score())

返回結果:88

當幾個類物件中有共同的屬性和方法時,就可以把這些屬性和方法抽象並提取到基類中,每個類物件特有的屬性和方法還是在本類物件中定義,這樣,只需要讓每個類物件都繼承這個基類,就可以訪問基類中的屬性和方法了。繼承基類的每個類物件被稱為派生類。基類也被稱為父類或超類,派生類也被稱為子類。

python中的所有類物件都繼承自乙個統一的基類:object。這就是為什麼我們在定義類物件時要在類物件後面新增(object)。

class animal(object):

def eat(self):

print("吃飯" )

def drink(self):

print("喝水")

class dog(animal):

def swim(seif) :

print(" 游泳』)

dog = dog()

dog. eat ()#返回結果:吃飯

dog. drink()#返回結果:喝水

dog. swim()#返回結果:游泳

class bird(animal):

def fly(seif):

print(」飛翔")

bird = bird()

bird. eat ()#返回結果:吃飯

bird. drink ()#返回結果:喝水

bird. fly()#返回結果:飛翔

class childclass (parentclass) :

pass

class childclass ( parentclassl, parentclass2, ..., parentclassn):

pass

子類會繼承所有父類(包括所有直接父類和所有間接父類)的所有屬性和方法)

class parentclass (object) :

ca = "ca (父類)"

def __ init__ (self):

print("__ init__ ()被凋用了 (父類)」)

def im(self):

print("im()被凋用了(父類) ")

@classmethod

def cm(cls):

print(" cm()被凋用了(父類)」)

class childclass (parentclass) :

ca="ca(子類)」

def __ init__ (self):

print("__ init__ ()被呼叫了 (子類)")

def im(self):

print(" im()被呼叫了(子類)」)

@classmethod

def cm(cls):

print(」cm(被凋用了(子類)「)

cc = childclass ()

print (childclass. ca)

print(cc. ca)

cc. im()

childclass. cm()

cc. cm()

返回結果:

__init__ ()被呼叫了(子類)

ca(子類)

ca(子類)

im()被呼叫了(子類)

cm()被呼叫了(子類)

cm()被呼叫了(子類)

父類中被重寫的名為***的方法,在子類重寫後的方法中可以通過super().***()進行呼叫

class a(object):

def f(self):

print("a.f")

class b(a):

def f(self):

print("b.f")

class c(a):

def f(self):

print("c.f")

class d(b, c):

def f(self):

#super(). f()

super(b, self).f()

d=d()

d. f()

#返回結果:c. f

class parentclass (object):

def do_sth(self) :

print("do_sth() in parentclass" )

class childclassl (parentclass) :

def do_sth(self) :

print(do_sth() in childclassl")

class childclass2(parentclass):

def do_ ,sth(self):

print("do_sth() in childclass2' )

def f (parent):

parent. do_sth()

f(parentclass())

f(childclass1())

f(childclass2())

#返回結果:

do_sth() in parentclass

do_sth() in childclass1

do_sth() in childclass2

class someclass (object):

def do_ sth(self) :

print("do_sth() in someclass" )

f(someclass())

#返回結果:do_sth() in someclass

Go 物件導向程式設計之繼承

package main import fmt 編寫乙個學生考試系統 小學生 type pupil struct 顯示他的成績 func p pupil showinfo func p pupil setscore score int func p pupil testing 大學生,研究生。大學生...

物件導向程式設計(封裝 繼承 多型)

1 保證 資料的安全性 2 遮蔽 複雜性 3 封裝型別 普通 封裝成方法 方法都封裝在乙個類中。using system namespace lesson01 public void close class mainclass 1 被繼承類 父類 基類 繼承類 子類 派生類 2 子類可以擁有父類的全...

物件導向程式設計03(封裝 繼承 多型 重寫 MRO)

根據需求將屬性和方法封裝到乙個抽象的類中 在使用的時候,只要按照自己的需求去呼叫,不必了解實現的細節 封裝 封裝是物件導向程式設計的三大特徵之一。封裝有兩方面的含義 1.將資料 屬性 和行為 方法 包裝到類物件中。在方法內部對屬性進行操作,在類物件的外部呼叫方法。這樣,無需關心方法內部的具體實現細節...