构造器(一)

简介:

构造器的关键字是init,今天我们就谈谈这个init关键字,在创建类或者结构体时,必须为所有的存储属性设置初始值,我们可以在定义的时候直接设置默认值。或者在构造器中设置值。

实例存储的初始化大致分为如下几类:

  • 定义实例存储属性时显式指定初始值。
  • 实例存储属性的类型为可选类型,这样默认分配nil作为初始值
  • 提供构造器为实例存储属性分配初始值

很明显,今天我们学习的是第三者

无参构造器

构造器后面括号里没有参数

  struct  Week
  {
 var desc:String=""
 var info:String=""
    init()
    {
    self.desc="周五"
     self.info="这一天是程序员最开心的日子"
    }
    }
    var week2=Week()
    print(week2.desc)
    print(week2.info)

有参构造器

  struct  Week
  {
 var desc:String=""
 var info:String=""
  init(desc:String,info:String)
    {
    self.desc=desc
        self.info=info
    } 
     }
var week=Week(desc: "周一", info:"上班的第一天,怀念周末的日子")
    print(week.desc)
    print(week.info)

有参取消无外部形参名

在参数前面加上 _ 来取消隐式的外部形参名

  struct  Week
  {
     var desc:String=""
     var info:String=""
    init()
    {
    self.desc="周五"
     self.info="这一天是程序员最开心的日子"
    }
    init(_ desc:String, _ info:String)
    {
    self.desc=desc
    self.info=info
    }    
    }
var week1=Week("周一","上班的第一天,怀念周末的日子")
    print(week1.desc)
    print(week1.info)  

构造器重载

上面我们定义了三个构造器,像这样的一个结构体或类里面包含多个构造器的,就构成了构造器重载。区分构造器重载的条件是:多个构造器的参数列表或者外部形参名必须不同。
上面三块代码整合到一块就构成了构造器重载,如下:

    struct  Week
  {
 var desc:String=""
 var info:String=""
    init()
  {
    self.desc="周五"
    self.info="这一天是程序员最开心的日子"
   }
   init(desc:String,info:String)
    {
    self.desc=desc
    self.info=info
    }
  init(_ desc:String, _ info:String)
   {
    self.desc=desc
    self.info=info
    }
  }
目录
相关文章
|
存储 安全
构造器(二)----指定构造器、便利构造器
在上一篇博客中简单介绍了构造器基础层面的知识构造器(一),下面我们深入的学习类的构造器应用。 在Swift中类一共有两种构造器: 指定构造器 便利构造器 什么是指定构造器,有什么作用? 我个人的理解为在类中没有加任何关键字的构造器称为指定构造器,作用为初始化类中所有的实例存储属性 init() { ... } 什么是便利构造器,有什么作用? 我个人理解为在类中(只能在类中,结构体和枚举里面是没有的)加上convenience关键字的构造器为便利构造器,作用为辅助性调用指定构造器进行一系列的工作。
696 0
|
Java
什么是构造器?
什么是构造器?
129 0
|
存储 程序员
构造器(一)
构造器的关键字是init,今天我们就谈谈这个init关键字,在创建类或者结构体时,必须为所有的存储属性设置初始值,我们可以在定义的时候直接设置默认值。或者在构造器中设置值。 实例存储的初始化大致分为如下几类: 定义实例存储属性时显式指定初始值。
552 0
|
Java 程序员 C#
用静态工厂方法代替构造器
用静态工厂方法代替构造器
102 0
|
Python
8.2 类的构造器
class ren():     '''this class is about ren class。类的说明,使用三个单引号'''     def __init__(self,name,sex):        # 构造器         # 注意到 __init__ 方法的...
679 0
|
Java C++
C++类中在构造器中调用本类的另外构造器
C++类中在构造器中调用本类的另外构造器
104 0
父类中如果没有无参构造方法(也即父类中只给了带参构造方法),子类的构造方法怎么办?
父类中如果没有无参构造方法(也即父类中只给了带参构造方法),子类的构造方法怎么办? /* 父类中如果没有无参构造方法(也即父类中只给了带参构造方法),子类的构造方法怎么办?   法1:子类的构造方法通过 super(...); 去显示调用父类的带参构造方法。
1181 0
|
Java C#
C# 构造方法
应用场景:1. 初始化(加载)对象 2. 初始化(加载)一些数据 特点:默认有一个无参构造方法
96 0