自定義腳本語言引擎開發紀實 -類的繼承(類似python)

單繼承例子

class stature
	func __init__(self, height)
		self.height = height
	end
	func __del__(self)
	end
	
	func GetHeight(self)
		return self.height
	end
endclass

class child(stature)
	sum=0
	school="大二班"
	func __init__(self, name, age, height)
		self.name = name
		self.age = age
		child.sum = child.sum + 1
		//調用基類構造函數
		stature.__init__(self, height)
	end
	func __del__(self)
		child.sum = child.sum - 1
	end
	func GetSchool()
		return child.school
	end
	func GetSum()
		return child.sum
	end
	func GetNameAndAge(self)
		return self.name, self.age
	end
endclass

測試

yew=child("耀耀", 6, 120)
js.debug.log("log\tname:" + yew.name + "\tage:" + yew.age + "\theight:" + yew.height)

結果:

[11588] log name:耀耀 age:6 height:120

多繼承(繼承類似python)

class stature
	func __init__(self, height)
		self.height = height
	end
	func __del__(self)
	end
	
	func GetHeight(self)
		return self.height
	end
endclass
//child繼承自stature
class child(stature)
	sum=0
	school="大二班"
	func __init__(self, name, age, height)
		self.name = name
		self.age = age
		child.sum = child.sum + 1
		//調用基類構造函數
		stature.__init__(self, height)
	end
	func __del__(self)
		child.sum = child.sum - 1
	end
	func GetSchool()
		return child.school
	end
	func GetSum()
		return child.sum
	end
	func GetNameAndAge(self)
		return self.name, self.age
	end
endclass

class gender
	boys = 0
	girls = 0
	func __init__(self, gender_type)
		self.gender_type = gender_type
		if(gender_type == "男")
		then
			gender.boys = gender.boys + 1
		elseif(gender_type == "女")
		then
			gender.girls = gender.girls + 1
		end
	end
	
	func __del__(self)
		if(self.gender_type == "男")
		then
			gender.boys = gender.boys - 1
		elseif(self.gender_type == "女")
			gender.girls = gender.girls - 1
		end
	end
	
	func GetGender(self)
		return self.gender_type
	end
	
	func GetBoysAndGirlsSum()
		//返回男孩數,女孩數,總人數
		return gender.boys, gender.girls, gender.boys + gender.girls
	end
endclass
//多繼承
class student(child, gender)
	func __init__(self, name, age, height, gender_type)
		//調用基類的構造函數, 類似python
		child.__init__(self, name, age, height)
		gender.__init__(self, gender_type)
	end
	
	func __del__(self)
		//調用基類的析構函數
		child.__del__(self)
		gender.__del__(self)
	end
endclass

測試

xiaoming=student("小明", 8, 130, "男")
yew=student("耀耀", 6, 120, "男")
xiaohua=student("小花", 8, 135, "女")
xiaoli=student("小麗", 6, 117, "女")
xiaogang=student("小剛", 7, 123, "男")
xiaoya=student("小雅", 7, 120, "女")

js.debug.log("log\tname:" + xiaoming.name + "\tage:" + xiaoming.age + "\t身高" + xiaoming.height + "\t性別" + xiaoming.gender_type)
js.debug.log("log\tname:" + yew.name + "\tage:" + yew.age + "\t身高" + yew.height + "\t性別" + yew.gender_type)
js.debug.log("log\tname:" + xiaoli.name + "\tage:" + xiaoli.age + "\t身高" + xiaoli.height + "\t性別" + xiaoli.gender_type)
js.debug.log("log\t學校:" + child.school + "共有學生:" + child.GetSum() + "名")

boys, girls, sum = gender.GetBoysAndGirlsSum()
js.debug.log("log\t男孩:" + boys + "\t女孩:" + girls + "\t共" + sum + "人")

運行結果

[10288] log name:小明 age:8 身高130 性別男
[10288] log name:耀耀 age:6 身高120 性別男
[10288] log name:小麗 age:6 身高117 性別女
[10288] log 學校:大二班共有學生:6名
[10288] log 男孩:3 女孩:3 共6人
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章