【OC03-1】面向对象——封装、继承、多态(连载三)
2015-07-29 07:59
337 查看
1.OOP:面向对象编程(object oriented programing)
OOD:面向对象设计(object oriented design)
2.封装:隐藏属性、方法、或实现细节的过程
3.OC面向的都是单继承:一个类只有一个父类,多个子类
多继承:一个类有多个父类,多个子类
4.子类自定义初始化方法:
直接在父类自定义初始化方法后加入新属性
调用父类自定义初始化方法:
self = [super initWithBrand:brand Color:color]
{
if (self){
_maxWeight = maxWeight;
}
return self;
}
5.要添加新的其他文件已有的类文件方法:
(1)实际拷贝,再Add files to
工程名
(2)直接Add files to
工程名
6.多态
例子:
person.m[b]文件:[/b]
//使用打印机
- (void)usePrint:(Printer *)print //Printer是父类
{
[print printer]; //printer是父类中的方法
}
main.m[b]文件:[/b]
Printer *p1 = [[ColorPrinter alloc] init];
Printer *p2 = [[BlackPrinter alloc] init];
Person *person = [[Person alloc] init];
NSLog(@"请输入1或2:");
NSInteger a;
scanf("%ld", &a);
if (a == 1) {
[person usePrint:p1];
}else if (a == 2){
[person usePrint:p2];
}else{
NSLog(@"请输入1或2");
}
7.在.h文件中互相#import会引起相包含,程序运行会出错,此时用@class解决,再在.m文件中使用#import
@class与#import的区别,使用@class有什么好处?
【1】 @class:告诉编译器有这样一个类,仅仅是类的声明
【2】 #import:导入一个头文件,获取该头文件中类的定义(属性和方法)。所有的方法都知道了
【3】@class在编译时,速度更快
【4】@class解决引用死锁的问题(类的扩展、代理设计模式)
#import可能会引起相互导入,@class可以解决。
【5】在头文件里要使用其他类,一般用@class,在实现文件用#import导入类文件。
8.
属性的权限修饰符有哪些,各有什么作用?
[1] @public———>公开的,所有的类都能用
[2] @protected—->受保护的,只有本类和其子类可用
[3] @private———>私有的,只有本类可用
OOD:面向对象设计(object oriented design)
2.封装:隐藏属性、方法、或实现细节的过程
3.OC面向的都是单继承:一个类只有一个父类,多个子类
多继承:一个类有多个父类,多个子类
4.子类自定义初始化方法:
直接在父类自定义初始化方法后加入新属性
调用父类自定义初始化方法:
self = [super initWithBrand:brand Color:color]
{
if (self){
_maxWeight = maxWeight;
}
return self;
}
5.要添加新的其他文件已有的类文件方法:
(1)实际拷贝,再Add files to
工程名
(2)直接Add files to
工程名
6.多态
例子:
person.m[b]文件:[/b]
//使用打印机
- (void)usePrint:(Printer *)print //Printer是父类
{
[print printer]; //printer是父类中的方法
}
main.m[b]文件:[/b]
Printer *p1 = [[ColorPrinter alloc] init];
Printer *p2 = [[BlackPrinter alloc] init];
Person *person = [[Person alloc] init];
NSLog(@"请输入1或2:");
NSInteger a;
scanf("%ld", &a);
if (a == 1) {
[person usePrint:p1];
}else if (a == 2){
[person usePrint:p2];
}else{
NSLog(@"请输入1或2");
}
7.在.h文件中互相#import会引起相包含,程序运行会出错,此时用@class解决,再在.m文件中使用#import
@class与#import的区别,使用@class有什么好处?
【1】 @class:告诉编译器有这样一个类,仅仅是类的声明
【2】 #import:导入一个头文件,获取该头文件中类的定义(属性和方法)。所有的方法都知道了
【3】@class在编译时,速度更快
【4】@class解决引用死锁的问题(类的扩展、代理设计模式)
#import可能会引起相互导入,@class可以解决。
【5】在头文件里要使用其他类,一般用@class,在实现文件用#import导入类文件。
8.
属性的权限修饰符有哪些,各有什么作用?
[1] @public———>公开的,所有的类都能用
[2] @protected—->受保护的,只有本类和其子类可用
[3] @private———>私有的,只有本类可用
相关文章推荐
- 协变covariant[+T] 逆变contravariant[-T]
- Windows下Python字符串编码问题
- 快速创建php server
- 【OC-2】OC语言基础二(自定义初始化、点语法)(连载二)
- 2012届华为校园招聘机试题
- 2013届华为校园招聘机试题
- OA系统常见的审批流程
- 单链表的逆转
- 2014届华为校园招聘机试题
- 解析大型.NET ERP系统 代码的坏味道
- Kubernetes 源码编译以及源码基于libvirt/kvm的coreos集群测试介绍
- 企业管理软件能带来什么
- Animate
- NOI2013 快餐店
- 2015届华为校园招聘机试题
- Windows下安装Django
- 【冬瓜哥画PPT】——双活是个坑!
- 自己用的配置文件
- 期初动态数据
- 【计蒜客系列】挑战难题24:函数规律