繼承中的super使用

2021-09-28 20:16:30 字數 1900 閱讀 1513

'''

繼承中的super使用

特點:1、如果類中不定義__init__,呼叫父類 super class的__init__

2、如果類繼承父類也需要定義自己的__init__,就需要在當前類的__init__呼叫一下父類__init__

3、如何呼叫父類__init__:

super().init_(引數)

super(型別,物件).__init__(引數)

4、如果父類有eat(),子類也定義乙個eat方法,預設搜尋的原則:先找當前類,再去找父類s.eat()

父類提供的方法不能滿足子類的需求,就需要在子類中定義乙個同名的方法,這種形為:重寫

5、子類的方法中也可以呼叫父類方法:

super().方法名(引數)

'''class

person

:def

__init__

(self, no, name, salary)

: self.no = no

self.name = name

self.salary = salary

def__str__

(self)

: msg =

'工號:{}, 姓名:{},本月工資:{}'

.format

(self.no, self.name, self.salary)

return msg

defgetsalary

(self)

:return self.salary

class

worker

(person)

:def

__init__

(self,no,name,salary,hours, per_hour)

:super()

.__init__(no,name,salary)

self.hours = hours

self.per_hour = per_hour

defgetsalary

(self)

: money = self.hours*self.per_hour

self.salary += money

return self.salary

class

salesman

(person)

:def

__init__

(self, no, name, salary, salemoney, percent)

:super()

.__init__(no, name, salary)

self.salemoney = salemoney

self.percent = percent

defgetsalary

(self)

: money = self.salemoney*self.percent

self.salary += money

return self.salary

w = worker(

'001'

,'king'

,2000

,160

,100

)s = w.getsalary(

)print

('月薪是:'

, s)

print

(w)saler = salesman(

'002'

,'lucy'

,5000

,500

,0.3

)s = saler.getsalary(

)print

('月薪是--->:'

, s)

print

(saler)

繼承的總結(super的使用)

super 代表父類物件,在繼承中有重要作用 子類繼承父類,會繼承父類非私有的成員變數和方法。子類和父類如果成員變數同名,則可以使用super.成員變數加以區分。fu 類中的成員變數是非私有的,子類中可以直接訪問。若fu 類中的成員變數私有了,子類是不能直接訪問的。通常編碼時,我們遵循封裝的原則,使...

繼承 super的講解

super呼叫父類的構造方法,必須在構造方法的第乙個 super必須只能出現在子類的方法或者構造方法中 super和this 不能同時呼叫構造方法 代表的物件不同 this 本身呼叫 用這個物件 super 代表父類物件的應用 前提 this 沒有繼承也可以使用 super 只能在繼承條件才可以使用...

繼承和super的使用及注意

父類package oop.demo06 public class person public void print private修飾的無法被繼承 注意 父類如果沒有無參構造,則子類也不能有無參構造 否則會報錯 子類package oop.demo06 public class student e...