1- local Person = class .extends (" Test.OOPTest.Person" , Object )
1+ local Person = class .extends (" Test.OOPTest.Person" , SysLib . Object )
22function Person :constructor (name , age )
33 self .name = name
44 self .age = age
55end
66
7- local Student , base = class .extends (" Test.OOPTest.Student" , Person )
8- -- 构造函数中,前面的参数列表必须一致
7+ local Student , base = class .extends (" Test.OOPTest.Student" , Person )
98function Student :constructor (name , age , score )
109 base .constructor (self , name , age )
1110 self .score = score
1211end
1312function Student :ToString () -- override const
14- return " name: " .. self . name .. " , age: " .. tostring (self .age ).. " , score: " .. tostring (self .score )
13+ return string.format ( " name: %s , age: %s, score: %s " , self . name , tostring (self .age ), tostring (self .score ) )
1514end
1615
17-
1816local zhangsan = Student .New (" zhangsan" , 24 , 100 )
1917-- Activator.CreateInstance(gettype(Student), "zhangsan", 24, 100)
2018
21- Console . WriteLine (zhangsan :ToString ())
19+ assert (zhangsan :ToString () == " name: zhangsan, age: 24, score: 100 " )
2220
2321--- @type Type
2422local studentType = zhangsan :GetType ()
23+ assert (studentType == gettype (Student ))
24+ assert (studentType :GetName () == " Test.OOPTest.Student" )
2525
26- Console .WriteLine (" Type: " .. tostring (zhangsan :GetType () == gettype (Student )))
27- Console .WriteLine (" TypeName: " .. studentType :GetName ())
28-
29- Console .WriteLine (" Student是Person的派生类: " .. tostring (studentType :IsSubclassOf (gettype (Person ))))
30- Console .WriteLine (" Student是List的派生类: " .. tostring (studentType :IsSubclassOf (gettype (List ))))
31- Console .WriteLine (" zhangsan是Student的实例对象: " .. tostring (studentType :IsInstanceOfType (zhangsan )))
32- Console .WriteLine (" zhangsan是Person的实例对象: " .. tostring (gettype (Person ):IsInstanceOfType (zhangsan )))
33- Console .WriteLine (" zhangsan是List的实例对象: " .. tostring (gettype (List ):IsInstanceOfType (zhangsan )))
26+ assert (studentType :IsSubclassOf (gettype (Person )) == true )
27+ assert (studentType :IsSubclassOf (gettype (SysLib .Collections .List )) == false )
28+ assert (studentType :IsInstanceOfType (zhangsan ) == true )
29+ assert (gettype (Person ):IsInstanceOfType (zhangsan ) == true )
30+ assert (gettype (List ):IsInstanceOfType (zhangsan ) == false )
0 commit comments