温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

构造器重载

发布时间:2020-07-04 17:14:49 来源:网络 阅读:248 作者:hehemmm 栏目:开发技术

一、构造器重载概念

        函数重载概念也适用于构造器,条件如下:

    1、函数有相同的名字‘

    2、参数列表不同或返回值类型不同;


    构造器满足以下2个条件:

    

class Rectangle{
                var width:Double
                var height:Double
                init(width:Double,height:Double){
                    self.width=width
                    self.height=height
}
                
                init(W width:Double,H height:Double){
                    self.width=width
                    self.height=height
}
                
                init(length:Double){
                    self.width=length
                    self.height=length
}
                init(){
                    width = 10.0
                    height = 20.0
}
}




二、值类型构造器类型

        

            为了减少多个构造器间的代码重复,在定义构造器时,可以通过调用其它的构造器来完成实例的构造部分,这个过程称为构造器代理。构造器代理在值类型和引用类型中使用不同,

            

struct Rectangle{
                var width:Double
                var height:Double
                init(width:Double,height:Double){
                    self.width=width
                    self.height=height
}
                
                init(W width:Double,H height:Double){
                    self.init(width:width,height:height)
}
                
                init(length:Double){
                    self.init(width:length,height:length)
}
                init(){
                    self.init(width:60,height:80)
}
}


三、引用类型构造器横向代理


            引用类型构造器代理是类构造器代理,由于类有继承关系,类构造器代理比较复杂,分为横向代理和向上代理


            1、横向代理类型类似于值类型构造器代理,发生在同一类内部,这种构造器称为便利构造器;

             2、向上代理发生在继承情况下,在子类型构造过程中要先调用父类构造器,初始化父类的存储属性,这种构造器称为指定构造器。


class Rectangle{
                var width:Double
                var height:Double
                init(width:Double,height:Double){
                    self.width=width
                    self.height=height
}
                
                init(W width:Double,H height:Double){
                    self.width=width
                    self.height=height
}
                
                convenience init(length:Double){
                    self.init(W:length,H:length)
}
                 convenience init(){
                    self.init(length:10.0)
                    self.height = 20.0
}
}


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI