多态 OC——第十天

简介:
1、多态  父类指针指向子类对象
     没有继承就没有多态
     联系前面知识才能清楚什么是多态,所以放到最后面总结小知识点,有前面的知识会对多态更好的了解,会觉得简单很多,但是看此篇博文需要有前面的基础,下面带大家看下:

封装:隐藏内部实现,稳定外部接口.

           封装就是定义类 定义属性 定义方法

属性:封装了setter get方法 
Person.h
@property(nonatomic,retain)NSString *name,*sex;

类封装了实例变量和方法

#import 

@interface Person : NSObject

{

    NSString *_name;

    NSString *_sex;

    int _age;


}
——————————————————————————————————————————————

@property(nonatomic,retain)NSString *name,*sex;

@property(nonatomic,assign)int age;

- (id)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age;

-(Person *)work;

@end

==============================================
Person.m

#import "Person.h"

@implementation Person

@synthesize name = _name,sex = _sex,age = _age;

- (id)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age

{

    self = [super init];

    if (self) {

        self.name = name;

        self.sex = sex;

        self.age = age;

    }

    return self;

}

- (Person *)work

{

    NSLog(@"%@正在工作",self.name);

    return 0;

}

@end

2、继承:子类可以直接复用父类中的成员.子类继承父类所有方法的声明和实现 非私有的实例变量以及协议 继承是要在.h中声明一下 继承具有单根性和传递性
 继承就是代码优化公共部分交给父类
#import "Person.h"
@interface Worker : Person
@end

#import "Person.h"
@interface King : Person
@end

3、多态:不同对象对同一消息的不同响应.子类可以重写父类的方法

多态就是允许方法重名 参数或返回值可以是父类型传入或返回

#import "AppDelegate.h"

#import "Worker.h"

#import "Actor.h"

#import "King.h"

Worker *worker = [[Worker allocinit];

    worker.name = @"工人";

    [worker work];//worker 可以换为父类型Person

    King *king = [[King alloc]init];

    king.name = @"国王";

    [king work];//king可以换为父类型Person

欢迎学习本文档,未经博主允许,不得私自转载!

转自:http://blog.csdn.net/qq_31810357
相关文章
|
网络协议 网络虚拟化 数据安全/隐私保护
NAPT特性与配置实践分享
【4月更文挑战第1天】NAPT特性与配置实践分享
367 26
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】学习人工智能需要学习哪些课程,从入门到进阶到高级课程区分
基于人工智能的多学科特性和其广泛的应用领域,学习这一技术涉及从基础理论到实践应用的各个层面。入门阶段应重点掌握数学基础、编程语言学习以及数据结构和算法等。进阶阶段需要深入机器学习、深度学习以及自然语言处理等专题。高级课程则包括专业核心课程、认知心理学与神经科学基础以及计算机图形学等课程
984 1
|
编解码 定位技术 Python
Python中ArcPy实现ArcGIS自动批量制图与地图要素批量设置
Python中ArcPy实现ArcGIS自动批量制图与地图要素批量设置
484 1
|
Java 程序员 数据库
业务需求-用AOP记录系统操作日志
全栈老司机 程序员林中酒 更新了本文详细介绍了如何使用AOP(面向切面编程)记录系统操作日志的业务需求,包括需求分析、技术实现分析、数据库设计和代码实现等各个环节。您将了解如何高效、规范地实现这一功能
element-ui中Form表单使用自定义验证规则
element-ui中Form表单使用自定义验证规则
155 0
|
C++
c++中的std::stod, stCPP程序说明std::stod():stof, std::stold
std: :stod() : 它将字符串转换为双精度。
633 0
|
存储 缓存 NoSQL
【带你读源码】GToken替换JWT实现SSO单点登录
今天和大家分享一下使用GoFrame的gtoken替换jwt实现sso登录的经验。
261 0
|
人工智能 文字识别 自然语言处理
看了那场直播后,我们发起了一个讨论
看了那场直播后,我们发起了一个讨论
|
Java 程序员 Maven
maven编译遇到"编码GBK的不可映射字符"警告的处理
maven编译会遇到"编码GBK的不可映射字符"的警告,来看看出了啥问题,怎么处理
371 0
maven编译遇到"编码GBK的不可映射字符"警告的处理
|
数据安全/隐私保护 Docker Ruby
GitLab找回密码
GitLab找回密码
341 0