OC总结第五讲:多态
学习oc我们要了解到oc有三种面向对象的特征:封装,继承,多态!前面已经总结了封装,继承,下面说一下多态。
一、什么是多态呢?
多态按照字面的意思就是“多种状态”。在面向对象语言中,方法的多种不同的实现方式即为多态。简单的说,就是一句话:允许将子类类型的方法赋值给父类类型的方法。父类指针指向子类对象,编译时会认为是父类的对象,但运行时,会检测其具体是谁的对象,从而我们可以知道没有继承也就没有多态!
二、继承和多态有什么区别呢?
很显然,继承是子类使用父类的方法,而多态则是父类使用子类的方法。
程序:
建立一个人和学生的类,学生类继承于人这个类,它们都有睡觉的方法!
main函数:
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *p = [[Student alloc]init];//父类指针指向子类对象,编译时会认为是父类的对象,但运行时,会检测其具体是谁的对象
[p sleep];
}
return 0;
}
Person类:
#import <Foundation/Foundation.h>
@interface Person : NSObject
-(void)sleep;
@end
#import "Person.h"
@implementation Person
-(void)sleep{
NSLog(@"睡觉");
}
@end
Student类:
#import "Person.h"
@interface Student : Person
@end
#import "Student.h"
@implementation Student
-(void)sleep{
NSLog(@"学生在教室趴着睡");
}
@end
输出结果为:学生在教室趴着睡
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步