# -*- coding: utf-8 -*-
#建立乙個空類
class person():
pass
someone =person()
#加入初始化方法
class person():
def __init__(self):#第乙個引數必須為self
pass
#為初始化方法新增額外引數
class person():
def __init__(self,name):#初始化時需要加入引數
self.name = name
#在函式內部,用self.name可以訪問name屬性,在外部就需要用通過例項化的物件名來訪問,如hunter.name
hunter = person('elner fudd')
#step1:檢視person類的定義
#step2:在記憶體中例項化(建立)乙個新的物件
#step3:引數傳入
#step4:name的值傳送給物件
#step5:返回新的物件
#step6:將物件與hunter關聯起來
print hunter.name
#類的繼承
class car():
def exclaim(self):#self的意義,之後再寫
print('i am a car')
class yugo(car):
pass
#yugo是car的子類,繼承car的方法和功能
c = car()
y = yugo()
c.exclaim()
y.exclaim()
#覆蓋原方法
class car():
def __init__(self,name):
self.name = name
def exclaim(self):
print('i am ' + self.name)
class yogu():
def __init__(self,name):
self.name = name + '!'
def exclaim(self):
print('i am ' + self.name)
class motor():
def __init__(self,name):
self.name = name + '?'
def exclaim(self):
print('i am ' + self.name)
c = car('tom')
y = yogu('jerry')
m = motor('adams')
print(c.name)
print(y.name)
print(m.name)
c.exclaim()
y.exclaim()
m.exclaim()
#為 子類 新增新方法
class car():
def __init__(self,name):
self.name = name
class yugo(car):
def __init__(self,name):
self.name = name + '!'
def need_a_push(self,who):
print ('i need a push from' + who)
y = yugo('daddy')
print(y.name)
y.need_a_push('tom')
#子類的方法,父類無法訪問
#c = car('name')
#c.need_a_push('tom')
#'''traceback (most recent call last):
# file "/tmp/963057337/main.py", line 89, in # c.need_a_push('tom')
#attributeerror: car instance has no attribute 'need_a_push''''
#使用super()從父輩哪兒獲得幫助
class parent():
def __init__(self,name):
self.name = name
def exclaim(self):
print (self.name)
class kid(parent):
def __init__(self,name,gender):
# super().__init__(name)#將self自動傳遞給父類,因此只用傳遞其餘引數
self.name = name
self.gender = gender
def exclaim(self,who):
super().exclaim()
#同理,因為父類的exclaim方法只有self引數,所以不需要再傳入引數
#但是要保證self.name屬性存在
#相當於 def exclaim(self):
# print(self.name)
print('i am ' + who)
k = kid('alice','famale')
print(k.gender)
k.exclaim('admas')
**子類繼承父類方法的幾種形式
class a:
def method(self, arg):
return
class b(a):
def method(self, arg):
# a.method(self,arg) #1
# super(b, self).method(arg) #2
# super().method(arg) #3
#python3 使用方法3取代了較複雜的方法2
舉例來說:
class a():
def __init__(self,name,age):
self.name =name
self.age = age
def get_name(self):
print(self.name)
def get_age(self):
print(self.age)
class b(a):
def __init__(self,name,age):
a.__init__(self,name,age) #1
def get_name(self):
super(b,self).get_name() #2
def get_age(self):
super().get_age()
b = b('alice',55)
print(b.name)
print(b.age)
b.get_name()
b.get_age()
子類與父類,
public class a public virtual void testm2 public class b a public new void testm2 很多時候子類override是為了基類使用時可以有靈活的構造配置,多型 使用方總是基類物件所以如果子類有它自己的成員 包括new的成員函...
Python子類和父類
寫過程式的都知道類,就是物件導向的意思,程式設計的水平大致分為幾個層次,基本語法,函式,物件導向,資料結構,架構,越往上水平越高。在建立類的時候,我們通常把具有相關性的函式包裝為乙個類,類也可以巢狀,叫父類和子類,尤其在python中,所有的物件都可以當成乙個variable,下面給出乙個類巢狀的例...
java 子類與父類
1.父類 注 f m1 是父類不被繼承的方法 f m2 父類被子類重寫的方法 public class father public void f m1 public void f m2 2.子類 注 f m3是子類的私有方法 f m2 子類重寫父類方法 public class sunextends...