#__author:"ryzreal"
#date :2018/7/2
"""類的定義
class 類名 :
def 方法名(self,*args,**kwargs):
print(args)
return 1
中間人 = 類名()
ret = 中間人.方法名(1)
print(ret)
"""# self 等於被呼叫的中間人 ,公共的部分可以封裝到中間人裡
# class ber:
# def foo(self,args):
# print(self,self.name,self.age,args)
## z = ber()
# z.name = "alex"
# z.age = 18
# z.foo(666)
## z1 = ber()
# z1.name = "ben"
# z1.age = 18
# z1.foo(777)
# 普通方法,構造方法__init__, 封裝
# class ber1:
# def __init__(self,n1,n2,n3):
# self.mane1 = n1
# self.mane2 = n2
# self.mane3 = n3
# self.mane4 = n3
# self.mane5 = n3
# self.mane6 = n3
# def foo(self):
# print(self.mane1,self.mane2,self.mane3,self.mane4,self.mane5,self.mane6)
## z1 = ber1(1,2,3)
# print(z1.mane1)
# z1.foo()
## class person :
# def __init__(self,name,age):
# # 構造方法,構造方法的特性, 類名() 自動執行構造方法
# self.n = name
# self.m = age
# def show(self):
# print("%s-%s"%(self.n,self.m))
## lihuan = person("李歡",13)
# lihuan.show()
# hu = person("胡",13)
# hu.show()
#繼承# class f:
# def f1(self):
# print("f.f1")
# def f2(self):
# print("f.f2")
## class s(f):
# def s1(self): #self永遠是執行該方法的呼叫者
# print("s.s1")
# def f2(self): #可以重寫父類方法
# super(s,self).f2() #執行父類方法f2(),也可以執行重寫的方法,第一種方法,,
# f.f2(self) #第二種方法
# print("s.f2")
## obj = s()
# obj.s1()
# obj.f2()
#多繼承
# class f1:
# def a(self):
# print("f1.a")
## class f2:
# def a(self):
# print("f2.a")
## class f3(f1,f2): #多繼承從左(繼承父類一條道走到黑,直到有共同的父類停止,再從另一條找到共同父類)到右優先繼承
# pass
## c = f3()
# c.a()
# class basereuqest:
# pass
## class requesthandler(basereuqest):
## def serve_forever(self):
# print("requesthandler.serve_request")
# self.process_request()
# def process_request(self):
# print("requesthandler.process_request")
# class minx:
## def process_request(self):
# print("minx.process_request")
## class son(minx, requesthandler):
# pass
## s = son()
# s.serve_forever()
#欄位與方法
# class province:
# #靜態物件.屬於類,執行時可以通過物件,也可以通過類訪問
# country = "中國"
# def __init__(self,name):
# #普通字段,屬於物件,只能通過物件訪問
# self.name = name
# #普通方法屬於類,要先建立物件,執行時可以通過物件,也可以通過類訪問(一般都用這種)
# def ber(self):
# print("bar")
# #靜態方法 保持在類中,在前面加裝飾器 @staticmethod ,可以把sta(self)中self省去,且不需建立物件
# @staticmethod
# def sta():
# print("sta")
## @staticmethod
# def sta1(a1,a2):
# print(a1,a2)
## #類方法 保持在類中,在前面加裝飾器 @classmethod ,cls指當前類,預設是新增的。且不需建立物件
# @classmethod
# def classmet(cls):
# print(cls)
# print("classmet")
## #屬性或特性,在前面加裝飾器 @property, 執行時obj.per可以不加(),有返回值
# @property
# def per(self):
# print("per")
# return 1
## #設定 只是呼叫方法
# @per.setter
# def per(self, val):
# print(val)
## #刪除 只是呼叫方法
# @per.deleter
# def per(self):
# print(666)
## obj = province("上海")
# r = obj.per
# print(r)
## #進入 per(self, val)
# obj.per = 123 #這樣目的是可以省去括號
# #進入 per(self)
# del obj.per
# province.classmet()
# province.sta()
# province.sta1(1,2)
## obj = province("江蘇")
# obj .ber()
# print(province.country)
# c = province("浙江")
# print(c.country)
# print(c.name)
物件導向練習
定義boat和car兩個類,兩者都有私有成員weight屬性,定義兩者的乙個友員函式totalweight 計算兩個類的物件的重量和。請根據給定的main函式和totalweight 函式的定義,完善boat和car兩個類。友元函式的使用 include using namespace std cl...
物件導向練習
include hero.class.php hero new hero 張三 建立英雄 hero daguai hero show hero daguai hero show hero daguai hero show hero daguai hero show hero daguai hero ...
物件導向知識
final int num 10 system.out.println num 報錯先載入靜態內容 執行靜態 塊 由於父子關係,所以子類載入之前需要先載入父類。執行父類的初始化塊和構造器。執行子類的構造器 父類中定義的方法不需要具體的實現步驟 父類中定義這個方法的目的是告訴子類一定要保證存在該方法 ...