pragma mark super
pragma mark 概念
/**
// 只需要利用super给父类的方法发送一个消息, 那么系统就会自动调用父类的方法
// 如果以后想在子类中调用父类的方法 可以使用super
// 如果想在给父类方法进行扩展 的同时 保留 父类的方法, 那么可以使用super调用父类同名的方法
super在类方法中, 一定会调用父类的类方法
super在对象方法中, 一定会调用父类的对象方法
可以利用super 在任意方法中 调用父类中的方法
*/
pragma mark 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "IPhone.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
[IPhone carameWithFlahLightStatus:FlahLightStatusOpen];
IPhone *p = [IPhone new];
[p carameWithFlahLightStatus:FlahLightStatusOpen];
return 0;
}
Android.h //安卓手机 类 (子类)
#import <Foundation/Foundation.h>
#import "Phone.h"
// 继承了某个类的类 我们称之为子类
@interface Android : Phone
@end
Android.m
#import "Android.h"
@implementation Android
@end
IPhone.h //苹果手机 类 (子类)
#import <Foundation/Foundation.h>
#import "Phone.h"
@interface IPhone : Phone
+ (void)carameWithFlahLightStatus:(kFlahLightStatus)status;
@end
IPhone.m
#import "IPhone.h"
@implementation IPhone
+ (void)carameWithFlahLightStatus:(kFlahLightStatus)status
{
NSLog(@"聚焦");
NSLog(@"调光");
NSLog(@"人脸识别");
#warning 这些代码 跟父类相同 所以只需要 调用父类写好的代码
/*
if (status == FlahLightStatusOpen) {
[self openFlahLight];
}
else
{
[self closeFlahLight];
}
NSLog(@"拍照");
*/
#warning 死循环
// [self carameWithFlahLightStatus:status];
// [IPhone carameWithFlahLightStatus:status];
#warning 调用父类的方法
// 只需要利用super给父类的方法发送一个消息, 那么系统就会自动调用父类的方法
// 如果以后想在子类中调用父类的方法 可以使用super
// 如果想在给父类方法进行扩展 的同时 保留 父类的方法, 那么可以使用super调用父类同名的方法
[super carameWithFlahLightStatus:status];
}
- (void)test
{
/**
super在类方法中, 一定会调用父类的类方法
super在对象方法中, 一定会调用父类的对象方法
可以利用super 在任意方法中 调用父类中的方法
*/
[super carameWithFlahLightStatus:FlahLightStatusOpen];
}
@end
IPhone.h //手机 类 (父类)
#import <Foundation/Foundation.h>
// 是否打开闪光灯
typedef enum
{
FlahLightStatusOpen,
kFlahLightStatusClose
}kFlahLightStatus;
@interface Phone : NSObject
{
int _cpu;
}
/**
* 根据闪光灯的状态拍照
*
* @param status 闪光灯的状态 (开、关)
*/
// 没有使用到成员变量 不需要使用对象方法
// 使用类方法
+ (void)carameWithFlahLightStatus:(kFlahLightStatus)status;
- (void)carameWithFlahLightStatus:(kFlahLightStatus)status;
/**
* 打开闪关灯
*/
+ (void)openFlahLight;
+ (void)closeFlahLight;
@end
IPhone.m
#import "Phone.h"
@implementation Phone
// 没有使用到成员变量 不需要使用对象方法
/**
类方法中 可以 直接调用 类方法
类方法中 不可以 直接调用 类方法
类方法中 不能访问成员变量
*/
- (void)carameWithFlahLightStatus:(kFlahLightStatus)status
{
NSLog(@"- carameWithFlahLightStatus");
}
+ (void)carameWithFlahLightStatus:(kFlahLightStatus)status
{
if (status == FlahLightStatusOpen)
{
[self openFlahLight];
}
else
{
[self closeFlahLight];
}
NSLog(@"拍照");
}
+ (void)openFlahLight
{
NSLog(@"打开闪关灯");
}
+ (void)closeFlahLight
{
NSLog(@"关闭闪关灯");
}
@end