码迷,mamicode.com
首页 > 其他好文 > 详细

重写和重载

时间:2017-03-20 22:27:43      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:定义   程序设计   重新定义   student   添加   重写与重载   class   int   sso   

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-重写与重载的使用和比较

 

重写和重载

标签:定义   程序设计   重新定义   student   添加   重写与重载   class   int   sso   

原文地址:http://www.cnblogs.com/muzijie/p/6591845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!