//------------------------// /*注意点: 1:静态函数不能继承 2:协议不和oc不一样了,虽然有optional和required关键字,但都不好使了~ 3:oc协议里面的静态函数(+)能够覆盖override,swift不可以,提示为最终函数。还是swift好些,比较严谨。 4:convenience构造函数中,不能用self+.的形式把init打出来,还以为不支持呢,结果直接写也没问题。但self不能省略。 5:convenience函数不能覆盖override 6:类里面改成员变量的函数,不用mutating修饰,结构和枚举需要。但编译器有提示,非常方便~。 7:如果子类也声明了和父类一样的函数,编译器非得让加override,oc不加也覆盖。这点和delphi可不一样。 @protocol ClassProtocol <NSObject> @required +(NSString*)ClassDescription; -(NSString*)Description; @end /*不用声明,直接实现都行~*/ @interface ClassTestBase : NSObject<ClassProtocol> +(NSString*)ClassDescription; @end @interface ClassTestChild : ClassTestBase @end @implementation ClassTestBase +(NSString*)ClassDescription{ return @"这是个class基类的静态函数"; } -(NSString*)Description{ return @"这是个class基类的成员函数"; } @end @implementation ClassTestChild -(NSString*)Description{ return @"这是个class子类的成员函数"; } +(NSString*)ClassDescription{ return @"这是个class子类的静态函数"; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; ClassTestBase* c = [[ClassTestChild alloc] init]; NSLog(@"%@:%@",c.Description,[ClassTestChild ClassDescription]); } */ protocol ClassProtocol { static func ClassDescription()->String func Description() -> String } class ClassTestBase:ClassProtocol{ static func ClassDescription() -> String { return "这是个class基类的静态函数" } var TrueName:String="" var ID:Int = 0; private init(ATrueName: String,AID:Int){ self.TrueName = ATrueName self.ID = AID; } convenience init(ATrueName: String){ self.init(ATrueName: ATrueName, AID: -1) } func Description() -> String { return "这是个class基类的成员函数" } func AddMyID() -> Void { ID += 1 } } class ClassTestChild: ClassTestBase { override func Description() -> String { return "这是个class子类的成员函数" } override init(ATrueName: String, AID: Int) { super.init(ATrueName: ATrueName, AID: AID) super.ID = AID + 5; } convenience init(ATrueName: String) { self.init(ATrueName: ATrueName, AID: -2) } override func AddMyID() -> Void { super.AddMyID() ID+=1 } } let obj:ClassTestBase = ClassTestChild(ATrueName:"Hello") obj.AddMyID() print(obj.ID)
类的用法远不止这些,今天只是初步写了下,以后遇到什么问题再改~
时间: 2024-11-07 10:46:37