oc20--继承2

//
//  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
//
//  Iphone.h


#import <Foundation/Foundation.h>
#import "Phone.h"

@interface Iphone : Phone
{
    // 注意: 在继承中方法可以重写, 但是属性(成员变量)不能重写
//    int _cpu;
}

- (void)setCpu:(int)cpu;
- (int)cpu;

// 打电话
// 如果子类中有和父类中同名的方法, 那么我们称之为方法重写
// 注意: 继承中的方法调用顺序, 如果自己有就调用自己的, 如果自己没有就调用父类的
// 方法的调用顺序, 先自己再父类, 如果父类中没有再爷爷类, 如果爷爷类再没有就找爷爷的爸爸类
// 如果一直找到NSObject类都没有找到, 那么就会报错。// reason: '-[Iphone signalWithNumber:]: unrecognized selector sent to instance 0x1003043c0'

//创建子类的时候,会依次创建他的父类以及祖先类的对象。

- (void)signalWithNumber:(NSString *)number;


// 在继承中除了对象方法可以重写, 类方法也可以重写
+ (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);
}

+ (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
//
//  main.m
//  继承的其他特性

#import <Foundation/Foundation.h>
#import "Iphone.h"

int main(int argc, const char * argv[]) {
    
    Iphone *p = [Iphone new];
    [p signalWithNumber:@"13456789"];
    
    [Iphone brand];
    /*
     继承: 当B类继承A类, 那么B类就拥有A类所有的属性和方法(类方法/对象方法)
     优点: 提高代码的复用性,可以让类与类之间产生关系, 正是因为继承让类与类之间产生了关系所以才有了多态
     */
    return 0;
}
原文地址:https://www.cnblogs.com/yaowen/p/7413192.html