Swift并覆盖自定义类的init方法

时间:2015-12-16 16:47:10

标签: ios swift

来自Objective-C的全新Swift,创建了一个类似的基本类:

class Person {

    var name: String
    var age: Int

    init(){

        name = “Bob”
        age = 30
    }

    func printInfo(){

        print(name)
        print(age)
    }

}

为什么在这里使用init()可以?我以为我需要使用override func init()。我还需要拨打超级电话吗?

2 个答案:

答案 0 :(得分:1)

这是因为你不是从任何类继承而且Person类是基类,意味着它没有任何超类。 (请注意,您不能从Person类)的init方法调用super.init()

如果您的类是从任何类继承的,则需要覆盖init方法并需要调用super.init()

像:

class Person : NSObject
{

    var name: String
    var age: Int

    override init()
    {    
        name = "Bob"
        age = 30
    }

    func printInfo()
    {    
        print(name)
        print(age)
    }
}

答案 1 :(得分:1)

来自Apple documentation

  

Swift类不从通用基类继承。给你上课   定义而不指定超类自动成为基类   你可以上课。

所以基本上你不会从任何课程中学习,因此不会覆盖任何init方法。如果您从一个班级继承,比如NSObject,那么是的,那么您可能想要打电话给超级班级'初始化(就像你在Objective-C中所做的那样)。