// // Phone.h // day13 #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 // day13 #import "Phone.h" @implementation Phone - (void)signalWithNumber:(NSString *)number { NSLog(@"利用手机打电话给%@,,,%i", number,self->_cpu); } - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content { NSLog(@"利用手机发短信给%@, 内容是%@,,,,%i", number, content,_cpu); } + (void)brand { NSLog(@"品牌"); } @end
// // Android.h // day13 #import <Foundation/Foundation.h> #import "Phone.h" // 继承了某个类的类我们称之为子类 @interface Android : Phone - (void)setCpu:(int)cpu; - (int)cpu; @end
// // Android.m // day13 #import "Android.h" @implementation Android - (void)setCpu:(int)cpu { _cpu = cpu; } - (int)cpu { return _cpu; } @end
// // Iphone.h // day13 #import <Foundation/Foundation.h> #import "Phone.h" // 其实在类名的后面加上: NSObject, 就是让当前类继承NSObject类 // new方法就是继承过来的 // isa指针 // 继承的语法 @interface 类名 : 需要继承的类 //@interface Iphone : NSObject @interface Iphone : Phone { //int _cpu; int _cpu1; //不能跟父类属性同名 } // 打电话 - (void)signalWithNumber:(NSString *)number; // 发短信 - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content; - (void)setCpu:(int)cpu; - (int)cpu; @end
// // Iphone.m // day13 #import "Iphone.h" @implementation Iphone - (void)signalWithNumber:(NSString *)number { NSLog(@"利用iPhone手机打电话给%@", number); } - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content { NSLog(@"利用iPhone手机发短信给%@, 内容是%@", number, content); } - (void)setCpu:(int)cpu { _cpu = cpu; } - (int)cpu { return _cpu; } @end
// // main.m // 继承基本概念 #import <Foundation/Foundation.h> #import "Iphone.h" #import "Android.h" int main(int argc, const char * argv[]) { /* 当前代码存在的问题: 重复代码太多 可以利用继承来解决当前重复代码太多的问题 只要A类继承了B类, 那么A类就拥有了B类的所有属性和方法(对象方法和类方法) */ Iphone *p = [Iphone new]; [p setCpu:100]; [p signalWithNumber:@"1355443322"];//利用手机打电话给1355443322,,,100 Android *a = [Android new]; [a setCpu:10000]; [a signalWithNumber:@"1868686886"];//利用手机打电话给1868686886,,,10000 [Iphone brand]; [Android brand]; [p setCpu:100]; NSLog(@"cpu = %i", [p cpu]); return 0; }