黑马程序员-OC学习笔记-----封装、继承、多态
来源:互联网 发布:python web入门 编辑:程序博客网 时间:2024/06/05 22:48
封装
封装是把数据和数据操作的实现细节隐藏起来,对外公开接口。这样可以让使用者更加方便,不用过多的去考虑实现细节。我们在封装的过程中也要尽量避免使用@public,这样会破坏类的封装性,我们尽量的把实例变量声明成保护或者私有类型,然后提供相应的设置和访问方法。
继承
一个新的类可以从现有的类中派生出来这个过程称为继承。生成的新的类我们称为子类,原来的类就被叫做父类或者超类。父类相对子类更加抽象,父类一般是子类的共性的集合,子类比父类更具体,是父类的延伸。
在OC中有基类NSObject,所有的类基本都有继承自基类的方法和属性。但是值得注意的是,在OC中没有多继承,这样我们也不用去考虑多继承带来的二义性了。也少了严格意思上的方法重载。
继承的例子:
Person.h
#import <Foundation/Foundation.h>@interface Person : NSObject{ char *_name;}-(void)setName:name;-(char*)name;-(void)run;@end
#import "Person.h"@implementation Person-(void)setName:(char *)name{ _name = name;}-(char*)name{ return _name;}-(void)run{ NSLog(@"%s runing",_name);}@end
#import "Person.h"@interface Student : Person@end
#import "Student.h"@implementation Student@end
#import <Foundation/Foundation.h>#import "Person.h"#import "Student.h"int main(){ Student *p = [[Student alloc] init]; char *name = "tom"; [p setName:name]; [p run]; NSLog(@"%s run",[p name]); return 0;}
运行结果:
多态
多态指的是程序在运行的时候会有很多种表现形态。发生多态的条件是前提是有继承。在使用多态是,会进行动态检测,以调用真实的对象方法。多态在代码中的体现即父类指针指向子类对象。多态可以节省很多代码,可以提高代码复用,并且可以调用我们以后新增的类的方法。它的实现在归功于动态绑定机制,而不是函数运行时就把对象类型确定死了。父类类型的变量不能直接调用子类特有的方法,如果必须要调用,则必须强制转换为子类特有的方法。
多态的例子:
Animal.h
#import <Foundation/Foundation.h>@interface Animal : NSObject-(void)eat;@endAnimal.m
#import "Animal.h"@implementation Animal-(void)eat{ NSLog(@"animal is eating");}@endDog.h
#import "Animal.h"@interface Dog : Animal@endDog.m
#import "Dog.h"@implementation Dog-(void)eat{ NSLog(@"Dog is eating");}@endCat.h
#import "Animal.h"@interface Cat : Animal@endCat.m
#import "Cat.h"@implementation Cat-(void)eat{ NSLog(@"cat is eating");}@endmain.m
#import <Foundation/Foundation.h>#import "Animal.h"#import "Dog.h"#import "Cat.h"void fun(Animal *p){ [p eat];}int main(){ Dog *d = [Dog new]; Cat *c = [Cat new]; fun(d); fun(c); return 0;}运行结果:
0 0
- 黑马程序员-OC学习笔记-----封装、继承、多态
- 黑马程序员-OC笔记(三)OC 封装 继承 多态
- 【黑马程序员】-我的OC学习笔记(2)-封装、继承、多态
- 黑马程序员--OC--封装、继承、多态
- 黑马程序员---oc 封装,继承,多态
- 黑马程序员 -- OC语言 封装 继承 多态
- 黑马程序员--OC--封装、继承、多态
- 黑马程序员——ios学习笔记 OC 封装&多态
- 黑马程序员-[OC]学习之旅-封装、继承
- 黑马程序员_java自学学习笔记(四)----封装、继承、多态
- 黑马程序员--IOS学习笔记(封装、继承、多态)
- 黑马程序员——OC笔记之面向对象三大特征(封装、继承、多态)
- 黑马程序员——OC学习——封装、继承、多态
- 黑马程序员------OC类的封装 继承 多态
- 黑马程序员--OC的三大特性 封装 继承 多态
- 黑马程序员-ios学习笔记 oc 封装
- 黑马程序员-ios学习笔记 oc 继承
- 黑马程序员——ios学习笔记 OC 继承
- c# orcale 用C#批量导入图片到orcale的表中
- ifndef/define/endif作用和用法
- Windows 8 各个版本区别对比
- 创建数据库快照
- mysql模糊查询
- 黑马程序员-OC学习笔记-----封装、继承、多态
- Hadoop2.2 HA安装
- (12) 关于Linux 定时任务crontab的一些存疑 解释
- 百度面试题:用链表交叉判断迭代打开url问题
- 修改adb端口
- maven项目jar包版本错误:'dependencies.dependency.version' for xxx:jar is missing. @ line xx, column xx
- 《GNU make项目管理》笔记--变量与宏(2)
- 银行卡卡号格式规范 每隔4为一个空格
- 阻塞和非阻塞IO code demo