• 重写和重载


    1 重载:

      (1)函数名相同,参数名、参数个数、参数类型不同

      (2)函数重载是面向对象程序设计语言的重要标志

      (3)OC不支持重载,Swift支持重载

    2 重写

      (1)也叫覆盖,指在自类中定义一个与父类中方法同名同参数列表的方法

      (2)重写是子类的方法覆盖父类的方法,要求方法名和参数都相同

      (3)因为子类会继承父类的方法,而重写就是将从父类继承过来的方法重新定义一次,重新填写方法中的代码。

      (4)重写必须继承,而重载不用

    假设有一个Person类,用于 “name” 和 “age” 两个属性,我们分别用重写和重载方法为其添加属性

    class Person: NSObject {
    
        var name: String
        var age: Int
        
        init(name: String, age: Int) {
            self.name = name
            self.age = age
            super.init()
        }
    }
    
    
    class Student: Person {
        
        var lesson: String
        
        // 通过重写方法为其添加“lesson”属性
        override init(name: String, age: Int) {
            
            lesson = "English"
            
            super.init(name: name, age: age)
        }
        
        // 通过重载方法为其添加“lesson”属性
        init(name: String, age: Int, lesson: String) {
            self.lesson = lesson
            super.init(name: name, age: age)
        }
    }
    
    // 重写实例化的对象
    let s1 = Student(name: "Tom", age: 20)
    s1.lesson
    
    // 重载实例化的对象
    let s2 = Student(name: "Tom", age: 20, lesson: "Chinese")
    s2.lesson

    总结:

      (1)通过重载,可以快速为方法添加新的属性,属性可以通过外部传入

      (2)重写,只能在方法内部设置属性,外部无法直观看到类的参数列表

    摘自:Swift-重写与重载的使用和比较

  • 相关阅读:
    Java
    Java
    Java
    Java
    Java
    Hang Gliding线段树
    Biggest Number深搜
    2021年暑假康复性训练(Codeforces Round #731 (Div. 3))全题解
    Python GUI tkinter 随机生成题目
    ModuleNotFoundError: No module named ‘exceptions‘ 情况解决
  • 原文地址:https://www.cnblogs.com/muzijie/p/6591845.html
Copyright © 2020-2023  润新知