@H_301_1@
@H_301_1@//类可以不继承自@H_301_1@NSObject
class@H_301_1@ Student {
@H_301_1@ var@H_301_1@ name: String@H_301_1@ = ""
@H_301_1@ var@H_301_1@ age: Int@H_301_1@ = 20
@H_301_1@
@H_301_1@//类的存储属性:@H_301_1@static
@H_301_1@ static@H_301_1@ var@H_301_1@ classProperty: Int@H_301_1@ = 0
//@H_301_1@类的计算属性:class@H_301_1@只能添加计算属性
@H_301_1@ class@H_301_1@ var@H_301_1@ calculateProperty: Int@H_301_1@ {
@H_301_1@ print@H_301_1@("setter"@H_301_1@)
@H_301_1@ }
@H_301_1@ }
@H_301_1@ }
@H_301_1@//创建单利对象
@H_301_1@ class@H_301_1@ var@H_301_1@ defaultStudent: Student@H_301_1@ {
@H_301_1@ struct@H_301_1@ TempType {
@H_301_1@ static@H_301_1@ let@H_301_1@ student = Student@H_301_1@()
@H_301_1@ }
return @H_301_1@TempType.@H_301_1@student
@H_301_1@ }
@H_301_1@ func@H_301_1@ normalFunc() {
@H_301_1@ print@H_301_1@("普通方法"@H_301_1@)
@H_301_1@ }
@H_301_1@
@H_301_1@//类方法:@H_301_1@static或@H_301_1@class
@H_301_1@ static@H_301_1@ func@H_301_1@ staticFunc() {
@H_301_1@ print@H_301_1@("static方法"@H_301_1@)
@H_301_1@ }
@H_301_1@ class@H_301_1@ func@H_301_1@ classFunc() {
@H_301_1@ print@H_301_1@("class方法"@H_301_1@)
@H_301_1@ }
@H_301_1@ /*
2@H_301_1@、方法中修改属性也需添加关键字mutating
@H_301_1@ */
@H_301_1@}
@H_301_1@
Student.@H_301_1@staticFunc()
@H_72_404@ Student.@H_301_1@classFunc()@H_301_1@//Student.classProperty = 100
print(Student.@H_301_1@classProperty)
@H_301_1@
//@H_301_1@实例对象
var@H_301_1@ laoWang = Student@H_301_1@()
var@H_301_1@ xiaoWang = laoWang
@H_301_1@
//@H_301_1@实例变量访问与结构体相同
@H_301_1@laoWang.@H_301_1@name = "小明"
@H_301_1@laoWang.@H_301_1@age = 25
@H_301_1@
print("name:\(@H_301_1@laoWang.@H_301_1@name) age:\(@H_301_1@laoWang.@H_301_1@age)")
//@H_301_1@打印内容一样,说明指向同一对象,因此对象是引用类型
print("name:\(@H_301_1@xiaoWang.@H_301_1@name) age:\(@H_301_1@xiaoWang.@H_301_1@age)")
@H_301_1@
//@H_301_1@判断变量是否指向类的同一个实例(===@H_301_1@、!==)
if @H_301_1@laoWang === @H_301_1@xiaoWang {
@H_301_1@ print@H_301_1@("YES"@H_301_1@)
@H_301_1@}