Python之繼承(概念,單繼承,多繼承)

2021-09-25 07:58:03 字數 1939 閱讀 3051

父類:

class 父類類名(object):

類體【公共部分】

子類:class 子類類名(父類類名):

類體【子類特有的部分】

#定義父類

#注意:如果沒有顯示的規定父類,則這個類的父類預設為object

class person(object):

#成員變數

def __init__(self,name,age):

self.name = name

self.age = age

#成員函式

def show(self):

print("父類中的show被呼叫")

@property

def age(self):

return self.__age

@age.setter

def age(self,age):

self.__age = age

#定義子類

class worker(person):

def __init__(self,name,age):

#在子類中呼叫父類中的建構函式,主要是為了將父類中的現有的成員變數應用到子類中,即父類的引用

#1.super(當前類,self).__init__(屬性列表)

super(worker,self).__init__(name,age)

#2.父類名.__init__(self,屬性列表)

#person.__init__(self,name,age)

#3.super().__init__(屬性列表)

#super().__init__(name,age)

#說明:上面三種寫法都可以使用,目的是呼叫父類的建構函式

#定義子類

class student(person):

def __init__(self,name,age,subject):

super().__init__(name,age)

def test(self):

print("testing")

#1.建立父類物件

p = person("lisi",10)

print(p.name,p.age) #lisi 10

p.show() #父類中的show被呼叫

#2.建立子類的物件

w1 = worker("aaa",1)

print(w1.name,w1.age) #aaa 1

w1.show() #父類中的show被呼叫

#3.子類除了繼承父類中的成員變數和成員函式之外,還可以有特有的成員變數和成員函式

s = student("bob",18,"語文")

s.show() #父類中的show被呼叫

s.test() #testing

#4.子類物件可以訪問父類中的公共的成員變數和成員函式,反之,父類物件無法訪問子類中特有的成員變數和成員函式

p.test() #attributeerror: 'person' object has no attribute 'test'

總結:

子類物件可以直接訪問父類中未私有化的屬性

子類物件可以呼叫父類中為私有化的成員函式

父類物件不能訪問子類特有的屬性和成員函式

優點:可以簡化**,減少冗餘;可提高**的可維護性;提高**的安全性;是多型的前提

缺點:在繼承關係中,耦合性是比較高的【如果修改父類,子類也隨之發生改變】

解釋:耦合性和內聚性被用來描述類與類之間的關係,耦合性越低,內聚性越高,說明**越好

python 單繼承,多繼承

父類 class person def init self,name,age self.name name self.self.age age def introduce self print 父類方法person self.name 學生類 繼承 person class student pers...

c 之各種繼承(單繼承,多繼承,菱形繼承)

在c 語言中。乙個派生類可以從乙個基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承,從多個基類派生的繼承稱為多繼承。繼承可以使 得到復用,子類還可以在父類的基礎上新增功能 c 繼承分為公有繼承,私有繼承,保護繼承三類 單繼承的定定義格式 class 派生類名 繼承方式 基類名 多繼承的...

單繼承 多繼承 菱形繼承

乙個類繼承另外乙個類,那麼該類就是子類 衍生類 被繼承的這個類叫做父類 基類,超類 繼承 1 單繼承 2 多繼承 python所有的類都預設繼承父類 object 如果子類想呼叫父類私有的,要先在父類裡面定義乙個公有的,然後在公有的裡面先調出私有,最後就可以間接的調出私有,不能在子類中定義公有 cl...