• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift子类继承父类

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
//         子类的指定构造方法必须调用父类构造方法,并确保调用发生在子类存储属性初始化之后。而且指定构造方法不能调用同一个类中的其他指定构造方法;
//         便利构造方法必须调用同一个类中的其他指定构造方法(可以是指定构造方法或者便利构造方法),不能直接调用父类构造方法(用以保证最终以指定构造方法结束);
//         如果父类仅有一个无参构造方法(不管是否包含便利构造方法),子类的构造方法默认就会自动调用父类的无参构造方法(这种情况下可以不用手动调用);
//         常量属性必须默认指定初始值或者在当前类的构造方法中初始化,不能在子类构造方法中初始化;
//

        class Person{
            var firstName : String,lastName:String
            var age:Int=0
            var fullName:String{
                get{
                    return firstName+""+lastName
                }
            }
            init(firstName:String,lastName:String){
                self.firstName = firstName
                self.lastName = lastName
            }
            func showMessage() {
                print("name=\(fullName),age=\(age)")
            }
            //通过final声明 子类无法重写
            final func sayHello(){
                print("hello world.")
            }
        }
        
        class Student:Person{
            
            //重写属性监视器
            override var firstName: String{
                willSet{
                    print("oldValue=\(firstName)")
                }
                didSet{
                    print("newValue=\(firstName)")
                }
            }
            var score:Double
            
            //子类指定构造方法一定要调用父类构造方法
            //并且必须在子类存储属性初始化之后调用父类构造方法
            init(firstName:String,lastName:String,score:Double){
                self.score = score
                super.init(firstName:firstName,lastName:lastName)
            }
            convenience init(){
                self.init(firstName:"",lastName: "",score: 0)
            }
            //重写方法
            override func showMessage() {
                print("name=\(fullName),age=\(age),score=\(score)")
            }
        }
         
        let aa = Person(firstName: "test",lastName:"TEST")
        aa.showMessage()
        aa.sayHello()
        let p = Student(firstName: "1111",lastName: "1111",score: 1111)
        p.firstName = "test"

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
OC跟Swift混编发布时间:2022-07-13
下一篇:
swift中block循环引用的问题发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap