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 文件:
// 使用打印机
- (void)usePrint:(Printer *)print //Printer 是父类
{
[print printer]; //printer 是父类中的方法
}
main.m 文件:
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");
}
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 文件:
// 使用打印机
- (void)usePrint:(Printer *)print //Printer 是父类
{
[print printer]; //printer 是父类中的方法
}
main.m 文件:
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———>私有的,只有本类可用