oc19--继承1

//
//  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;
}
原文地址:https://www.cnblogs.com/yaowen/p/7413061.html