美文网首页
swift-27构造函数 (重写构造函数)

swift-27构造函数 (重写构造函数)

作者: sunmumu1222 | 来源:发表于2017-08-30 10:11 被阅读140次

我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己的一份文档.

image.png
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //实例化person
        // () 等于 alloc init 
        // swift 中对应一个函数的 init() 构造函数
        // 作用: 给成员变量分配空间 初始化成员变量
//        let p = Person()
//        print(p.name)
        let s = Student()
        print("\(s.no) ~~~~ \(s.name)")
    }

}
image.png
import UIKit

/**
 必须属性的构造过程: 重写构造函数中, 先给自己舒心分配空间并且设置初始值, 再调用父类的 构造函数 
 1给自己的属性分配空间并且设置初始值
 2调用父类的'构造函数', 给父类的属性分配空间设置初始值
  NSObject 没有属性 只有一个成员变量 isa
 */

class Person: NSObject {
    var name: String
    //1Class 'Person' has no initializers 类Person 没有初始化器s 可以有多个 默认的是init
    //2override 重写: 父类有这个方法 子类重新编写父类方法的实现 需要override 关键字
    //3Property 'self.name' not initialized at implicitly generated super.init call
    //implicitly(隐式生成的 super.init) 调用父类的构造函数之前 属性self.name 没有被初始化
    
    override init() {
        //4 Property 'self.name' not initialized at super.init call
        //提示给 self.name 初始化 -> 分配空间 设置初始值!
        print("Person init")
        name = "zhang"
        super.init()
//      name = "li"
    }
    /**
    override 重写: 父类有这个方法 子类重新编写父类方法的实现 需要override 关键字
    父类方法满足不了子类的需求 , 重写来扩展需求
    */
    
    
}
image.png
import UIKit

class Student: Person {
    var no: String
    override init() {
        print("student init")
        no = "001"
        super.init()
    }
}
image.png image.png
#import "Book.h"

@interface Book()

@property (nonatomic, copy) NSString *bookName;

@end

@implementation Book

- (instancetype)init
{
    self = [super init];
    if (self) {
        _bookName = @"iPhone";
    }
    return self;
}


@end

相关文章

  • swift-27构造函数 (重写构造函数)

    我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己...

  • Kotlin继承与多态 (1)继承

    调用父类构造函数使用主构造函数使用此构造函数重载使用参数默认值调用构造函数重写成员属性和函数重写成员属性重写成员函...

  • javascirpt复习

    实例中访问构造函数原型的指针,指向的是构造函数原型,不是构造函数; 所以重写构造函数原型对象,【实例对象】访问还是...

  • 第六章——创建对象

    一、寄生构造函数模式、工厂模式、稳妥构造函数模式的区别与联系 寄生构造函数模式(重写了构造函数的返回值): 工厂模...

  • Swift之构造函数(重写构造函数)

    构造函数的基础 构造函数是一种特殊的函数 主要用来在创建对象时初始化对象 为对象成员变量设置初始值 在OC中的构造...

  • KVC 字典转模型构造函数

    swift /// `重写`构造函数 /// /// - parameter dict: 字典 /// /// -...

  • Flutter 6种构造函数详解

    Flutter有生成构造函数、默认构造函数、命名构造函数、重定向构造函数、常量构造函数、工厂构造函数 一.生成构造...

  • C# 构造函数总结

    构造函数 构造函数分为:实例构造函数,静态构造函数,私有构造函数。 实例构造函数 1、构造函数的名字与类名相同。 ...

  • View的构造函数分析

    View的构造函数分析 在自定义View的时候,我们在继承了View之后,需要重写4种构造函数,那么这四种构造函数...

  • 必要构造函数

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

网友评论

      本文标题:swift-27构造函数 (重写构造函数)

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