- 不要等到明天混埠,明天太遙遠,今天就行動睁蕾。
須讀:看完該文章你能做什么柒凉?
知道什么是繼承
學(xué)習(xí)前:你必須會什么?(在這里我已經(jīng)默認你具備C語言的基礎(chǔ)了)
什么是類
一族阅、本章筆記
當前代碼存在的問題 : 重復(fù)代碼太多
可以利用 繼承來解決當前重復(fù)代碼太多的問題
只要 A類繼承了B類, 那么 B類 就擁有了 A類的所有屬性 和方法
二、code
main.m
#pragma mark 08-繼承基本概念
#pragma mark - 代碼
#import <Foundation/Foundation.h>
#pragma mark 類
#import "IPhone.h"
#import "Android.h"
#pragma mark - main函數(shù)
int main(int argc, const char * argv[])
{
IPhone *p = [IPhone new];
[p signalWithNumber:@"10010"];
Android *a = [Android new];
[a signalWithNumber:@"20020"];
[IPhone brand];
[Android brand];
[p setCpu:222];
NSLog(@"cpu = %i",[p cpu]);
return 0;
}
phone
>>>.h
#import <Foundation/Foundation.h>
// 被繼承的這個類 我們稱之為父類 / 超類
@interface Phone : NSObject
{
int _cpu;
}
// 打電話
- (void)signalWithNumber:(NSString *)number;
// 發(fā)短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
+ (void)brand;
@end
>>>.m
iPhone
>>>.h
#import <Foundation/Foundation.h>
#import "Phone.h"
/*
其實 在類名的后面 加上 : NSObject, 就讓當前類 繼承 NSObject
new 方法就是繼承過來的
isa 指針
繼承的語法 @interface 類名 : 需要繼承的類
*/
//@interface IPhone : NSObject
@interface IPhone : Phone
/*
{
int _cpu;
}
// 打電話
- (void)signalWithNumber:(NSString *)number;
// 發(fā)短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
*/
- (void)setCpu:(int)cpu;
- (int)cpu;
@end
>>>.m
#import "IPhone.h"
@implementation IPhone
/*
// 打電話
- (void)signalWithNumber:(NSString *)number
{
NSLog(@"利用iPhone手機打電話給%@",number);
}
// 發(fā)短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
{
NSLog(@"利用iPhone手機發(fā)短信給%@,內(nèi)容是%@",number,content);
}
*/
- (void)setCpu:(int)cpu
{
_cpu = cpu;
}
- (int)cpu
{
return _cpu;
}
@end
Android
>>>.h
// 繼承了某個類的類 我們稱之為子類
#import <Foundation/Foundation.h>
#import "Phone.h"
@interface Android : Phone
/*
{
int _cpu;
}
// 打電話
- (void)signalWithNumber:(NSString *)number;
// 發(fā)短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
*/
- (void)setCpu:(int)cpu;
- (int)cpu;
@end
>>>.m
#import "Android.h"
@implementation Android
/*
// 打電話
- (void)signalWithNumber:(NSString *)number
{
NSLog(@"利用Android手機打電話給%@",number);
}
// 發(fā)短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
{
NSLog(@"利用Android手機發(fā)短信給%@,內(nèi)容是%@",number,content);
}
*/
- (void)setCpu:(int)cpu
{
_cpu = cpu;
}
- (int)cpu
{
return _cpu;
}
@end
image.png