码迷,mamicode.com
首页 > 编程语言 > 详细

[swift学习之五]类练习

时间:2016-05-07 10:01:43      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

//------------------------//
/*注意点:
 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)
类的用法远不止这些,今天只是初步写了下,以后遇到什么问题再改~

[swift学习之五]类练习

标签:

原文地址:http://blog.csdn.net/liyanq528/article/details/51331321

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!