美文网首页iOS面试
OC 类的继承 方法重载重写

OC 类的继承 方法重载重写

作者: 叩首问路梦码为生 | 来源:发表于2018-12-18 15:20 被阅读106次

OC 类的继承 方法重载重写

资料一:

一、类的继承

Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序。
Objective-c中所有类的父类是NSObject。

Objective-c中类的继承例子:

| | |

二、方法重写

在Objective-c中,子类可继承父类中的方法,而不需要重新编写相同的方法,直接可以使用父类的方法。
但有时我们不想使用使用父类方法,而是想作一定的修改,怎么办呢?只要将子类中书写一个与父类具有相同的方法名、返回类型和参数,就可以将将父类的方法覆盖重写。比较简单。

三、方法重载

在Objective-c中,方法是不能重载的。也就是说我们不能在类中定义这样的两个方法:它们的名子相同,参数个数相同,参数类型不同,不同的返回值类型。否则Xcode会报错。
下面定义的方法是错误的:


`-(``void``)setX:(``int``)intX;  `

`-(``void``)setX:(``double``)doubleX;`

资料二:

1.什么是重载?oc中不存在重载。

在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数

C++函数名相同是函数的名称相同。参数列表不同指参数的个数或者类型不同。

oc中函数名相同包含函数名称和所有的标签相同。oc不允许同一作用域内的同名函数,因此不允许重载。

即不允许函数名相同,参数个数相同,但类型不同的两个函数存在。

在oc中同一作用域内不允许相同函数名,因此oc中没有严格意义的重载。如:

-(void) test:(int) intValue;

-(void) test:(float) floatValue;
在c++中构成重载,因为函数名test重复,但参数类型不同。在oc中错误,因为函数名都是test,不构成重载

-(void) test:(int) x andY:(int) y;

-(void) test:(int) x andY:(double)y;//错误,还是重名了,函数名都是(test:andY:)

-(void) test:(int) x :(double) y; //正确,名字不同 (test::)

通过一个方法包含另一个方法,达到类似重载的功能,它们具有不同的函数名。通常用于构造函数,如:

init()

intwithx(){包含对init的调用}

intwithxy().....{包含对initx的调用}

越具体的函数可以在前面已有方法基础上建立

2.什么是重写?

重写发生在子类和父类之间,通过在子类中定义和父类相同方法名的方法,修改从父类继承过来的方法定义。

重写的作用是修改从父类继承过来的方法定义。(继承只能增加,修改,不能减少或者删除父类方法)

重写的要求:包括所有的标签相同即包括了参数个数需要相同,并且返回值要相同。

重写之后的方法查找过程:使用子类指针调用方法时,优先选择子类方法,没有的情况下才寻找父类的方法。

若要直接使用父类方法,使用super.体现了父子之间的多态性,如何寻找父子同名方法

相关文章

  • OC 类的继承 方法重载重写

    OC 类的继承 方法重载重写 资料一: 一、类的继承 Objective-c中类的继承与C++类似,不同的是Obj...

  • 面向对象的基本原则

    基本要素: 封装 , 继承 , 多态 多态 : 注意重写和重载 重写: 子类重写父类的方法 重载: 同样的方法名 ...

  • JAVA学习笔记(四)

    继承要解决的问题什么是继承关系子类继承了父类的哪些成员方法覆盖方法重载(Overload)和方法覆盖(方法重写 O...

  • java面向对象

    方法重载 方法重写 继承父类( 关键字: super、extends) super 关键字1.用super调用父类...

  • 2018-05-09

    重写 重载 1.重写(override) override是重写了个方法,以实现不同功能一般用于子类在继承父类时,...

  • 面向对象和pygame

    类的继承 类的继承 重写 添加属性 运算符的重载 内存机制 认识pygame

  • 类的进阶

    1.继承 需要被继承的类,类的方法,类的属性都要加open关键字 2.抽象类 重写 重载 抽象类不能被实例化,需要...

  • final

    final 修饰 的变量 不能改变值 修饰的方法 不能被重写 但是可以重载 修饰的类不能被继承

  • java方法重写与重载

    java方法重写与重载 重写:子类重写父类方法,形参、返回值不变,即外壳不变,核心重写 z重载:方法名相同,参数不同

  • 重写和重载

    重写:子类重写父类的方法,方法名和参数不变,改变实现类容;重载:同一个类中重载方法,名字相同,参数不同,返回类型随...

网友评论

    本文标题:OC 类的继承 方法重载重写

    本文链接:https://www.haomeiwen.com/subject/xcrlkqtx.html