美文网首页
Swift子类重写父类构造函数

Swift子类重写父类构造函数

作者: Howeix | 来源:发表于2019-02-27 09:58 被阅读0次
swift中子类重写父类构造方法: 如果父类没有指定构造方法(带参数的构造方法), 子类重写父类构造方法就不需要调用super的构造方法, 反之亦然(如果父类有指定构造方法, 子类重写的构造方法中必须显示调用父类构造方法):

父类没有指定构造函数:

class Animal {
    var name: String
    var age: Int
    init() {
        name = "Dog"
        age = 10
    }
    
    //指定构造方法
//    init(name: String, age: Int) {
//        self.name = name
//        self.age = age
//    }
    
}

class Dog : Animal {
    var NO: Int
    override init() {
        NO = 24
        //在没有指定构造函数的情况下,可以不用显示调用父类构造方法, 编译通过, swift会自动隐式调用super.init()
        //这样可以保证父类成员初始化完成, 另外swift构造顺序是先初始化完成子类成员, 再去初始化父类成员
//        super.init()
    }
}

父类有指定构造函数

class Animal {
    var name: String
    var age: Int
    init() {
        name = "Dog"
        age = 10
    }
    
    //指定构造方法
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    
}

class Dog : Animal {
    var NO: Int
    override init() {
        NO = 24
        //在有指定构造函数的情况下,必须显示调用父类构造方法, 不然通不过编译
        super.init()
    }
}

相关文章

  • Swift子类重写父类构造函数

    swift中子类重写父类构造方法: 如果父类没有指定构造方法(带参数的构造方法), 子类重写父类构造方法就不需要调...

  • Java基础篇

    父类子类构造函数 子类的构造函数会隐式调用父类的无参构造函数,子类若想调用父类的构造函数需在子类的构造函数的第一行...

  • 子类继承父类函数

    如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。子类不重写 init,实例...

  • C++ 从入门到放弃 (Day-07)

    父类的构造函数 ◼ 子类的构造函数默认会调用父类的无参构造函数◼ 如果子类的构造函数显式地调用了父类的有参构造函数...

  • 必要构造函数

    必要构造函数在类的构造函数前添加required 修饰符来表明表明它是一个必要构造函数.注意:当子类重写父类的必要...

  • Java面向对象

    1、子类实例化时会默认调用父类无参构造函数,如果父类没有无参构造函数,则需要子类构造函数显示调用父类有参构造函数 ...

  • java子类调用父类构造器函数

    子类 调用 父类的构造函数:(构造函数不会被继承,只是被子类调用而已) 1、子类所有的 构造函数 默认调用父类的无...

  • static代码块、构造代码块、构造函数以及Java类初始化顺序

    顺序:父类静态块-->子类静态块--> main方法-->父类构造代码块 -->父类构造函数-->子类构造代码块-...

  • 2020-07-07-《C++虚函数》

    虚函数可以让子类重写函数 子类重写父类中的虚函数 重写与重载的区别?

  • 构造函数 非静态代码块 构造函数的执行顺序

    执行结果 父类--静态代码块子类--静态代码块父类--非静态代码块父类--构造函数子类--非静态代码块子类--构造函数

网友评论

      本文标题:Swift子类重写父类构造函数

      本文链接:https://www.haomeiwen.com/subject/uhlxuqtx.html