父類: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...