zoukankan      html  css  js  c++  java
  • Swift学习笔记十三:继承

    一个类能够继承(inherit)还有一个类的方法(methods),属性(property)和其他特性

    一、基本的语法

    class Human{
        var name :String
        init(){
            name = "human"
            println(name)
        }
        func description(){
            println("name:(name)")
        }
    }
    class Student:Human{
        var score = 0
        init(){
            super.init()
            name = "Student"
            println(name)
        }
        override func description(){
            super.description()
            println("score:(score)")
        }
    }

    重点:
         ① 和Objective-C一样,继承一个类就是在定义的时候将父类名写在后面class Student:Human
         ② 继承类之后。会继承父类的全部属性和方法。要想重写父类的方法和属性,须要使用overridekeyword
         ③ 对于init()方法,重写不须要使用override 
         ④ 訪问父类的方法须要使用keywordsuper,如:super.description()

    二、重写属性和加入观察器

    class Human{
        var name :String
        init(){
            name = "human"
        }
        func description(){
            println(name)
        }
    }
    class Student:Human{
        override var name:String{
        willSet{
            println("will set (newValue)")
        }
        }
        override func description()
        {
            println("Student name:(name)")
        }
    }
    var a = Student()
    a.name = "小笨狼"      //输出:will set 小笨狼
    a.description()       //输出:Student name:小笨狼

    重点:
         ① 对于类的属性,也能够重写
         ② 重写属性时能够加入观察器
         ③ 不能为常量储存属性和仅仅读计算属性加入观察器,由于他们都是不可改变的

    三、防止继承或重写
         假设不想让某个类被继承,或者不想让某个属性或方法被重写。能够使用finalkeyword

    @final class Human{ //① 在class前加@final。此类将不可被继承
        @final var name :String //② 在属性前加@final。属性将不可被重写
        init(){
            name = "human"
        }
        @final func description(){  //③ 在方法前加@final,方法将不可被重写
            println(name)
        }
    }

    重点:
          class前加@final,此类将不可被继承。否则编译器会报错
                ② 在属性前加@final。属性将不可被重写,否则编译器会报错
          在方法前加@final,方法将不可被重写,否则编译器会报错





  • 相关阅读:
    Leetcode 421.数组中两数的最大异或值
    Leetcode 419.甲板上的战舰
    Leetcode 417.太平洋大西洋水流问题
    Leetcode 416.分割等和子集
    Leetcode 413.等差数列划分
    Leetcode 410.分割数组的最大值
    由股票价格形成因素看如何选股(发布于06-02 13:09)
    巴菲特的资产配置艺术(发布于06-01 13:28)
    ROE能否包打天下?(发布于05-31 11:27)
    价值迟迟不回归怎么办?(发布于05-30 10:02)
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5211946.html
Copyright © 2011-2022 走看看