pragma mark 继承其他特性
pragma mark 概念
/*
继承:
当B类继承A类, 那么B类就拥有A类所有的属性和方法(类方法\对象方法)
优点:
提高代码的复用性
可以让类与类之间的产生关系. 正是因为 继承让类与类之间产生了关系 所以才有了多态
注意:
不要以为继承可以提高代码的复用性, 以后单反发现多个类中 有重复代码就 抽取一个父类
只要满足 一定的条件 我们才能实现继承
条件 : xxxx 是 xxxx / 某某某 is a 某某某
学生:
姓名:
年龄:
数学成绩
语文成绩
英语成绩
排行版:
数据成绩
语文成绩
英语成绩
缺点:
耦合性 太强 (依赖性太强了)
*/
pragma mark 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "IPhone.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
IPhone *p = [IPhone new];
[p signalWithNumber:@"987654321"];
[IPhone brand];
/*
继承:
当B类继承A类, 那么B类就拥有A类所有的属性和方法(类方法\对象方法)
优点:
提高代码的复用性
可以让类与类之间的产生关系. 正是因为 继承让类与类之间产生了关系 所以才有了多态
注意:
不要以为继承可以提高代码的复用性, 以后单反发现多个类中 有重复代码就 抽取一个父类
只要满足 一定的条件 我们才能实现继承
条件 : xxxx 是 xxxx / 某某某 is a 某某某
学生:
姓名:
年龄:
数学成绩
语文成绩
英语成绩
排行版:
数据成绩
语文成绩
英语成绩
缺点:
耦合性 太强 (依赖性太强了)
*/
return 0;
}
IPhone.h //苹果手机 类 (子类)
#import <Foundation/Foundation.h>
#import "Phone.h"
@interface IPhone : Phone
{
//Deuplicate member 重复定义
// 注意: 在继承中 方法可以重写, 但是属性(成员变量) 不能重写
//int _cpu;
}
- (void)setCpu:(int)cpu;
- (int)cpu;
#warning 方法重写(对象方法重写)
// 如果 子类中 有和 父类中 同名的方法, 那么我们称之为方法重写
// 注意: 继承中的方法调用顺序, 如果直接邮 就调用自己的, 如果自己没有 就调用 父类的
// 方法的调用顺序, 先自己再父类, 如果父类中没有 再爷爷类, 如果爷爷类再没有 就找爷爷的爸爸类
// 如果一直到 NSObject 都找不到, 那么就会报错
//reason: '-[IPhone signalWithNumber:]: unrecognized selector sent to instance 0x1005037d0'
- (void)signalWithNumber:(NSString *)number;
#warning 方法重写(类方法重写)
+ (void)brand;
@end
IPhone.m
#import "IPhone.h"
@implementation IPhone
- (void)setCpu:(int)cpu
{
_cpu = cpu;
}
- (int)cpu
{
return _cpu;
}
- (void)signalWithNumber:(NSString *)number
{
NSLog(@"利用 iPhone手机打电话给%@",number);
}
#warning 类方法
// 品牌
+ (void)brand
{
NSLog(@"iPhone手机");
}
@end
Android.h //安卓手机 类 (子类)
#import <Foundation/Foundation.h>
#import "Phone.h"
// 继承了某个类的类 我们称之为子类
@interface Android : Phone
- (void)setCpu:(int)cpu;
- (int)cpu;
@end
Android.m
#import "Android.h"
@implementation Android
- (void)setCpu:(int)cpu
{
_cpu = cpu;
}
- (int)cpu
{
return _cpu;
}
@end
Phone.h //手机 类 (父类)
#import <Foundation/Foundation.h>
// 被继承的这个类 我们称之为父类 / 超类
@interface Phone : NSObject
{
int _cpu;
}
// 父类打电话
- (void)signalWithNumber:(NSString *)number;
// 父类发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
// 品牌
+ (void)brand;
@end
Phone.m
#import "Phone.h"
@implementation Phone
// 父类打电话
- (void)signalWithNumber:(NSString *)number
{
NSLog(@"利用手机打电话给%@",number);
}
// 父类发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
{
NSLog(@"利用手机发短信给%@,内容是%@",number,content);
}
// 品牌
+ (void)brand
{
NSLog(@"品牌");
}
@end