美文网首页八天学会OC
第03天OC语言(08):继承基本概念

第03天OC语言(08):继承基本概念

作者: liyuhong | 来源:发表于2017-07-20 16:10 被阅读7次
    • 不要等到明天,明天太遥远,今天就行动。
    须读:看完该文章你能做什么?

    知道什么是继承

    学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

    什么是类


    一、本章笔记
     当前代码存在的问题 : 重复代码太多
     可以利用 继承来解决当前重复代码太多的问题
     只要 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函数
    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;
    // 发短信
    - (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;
    // 发短信
    - (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);
    }
    // 发短信
    - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
    {
        NSLog(@"利用iPhone手机发短信给%@,内容是%@",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;
    // 发短信
    - (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);
    }
    // 发短信
    - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
    {
        NSLog(@"利用Android手机发短信给%@,内容是%@",number,content);
    }
    */
    
    - (void)setCpu:(int)cpu
    {
        _cpu = cpu;
    }
    - (int)cpu
    {
        return _cpu;
    }
    
    @end
    

    image.png

    相关文章

      网友评论

        本文标题:第03天OC语言(08):继承基本概念

        本文链接:https://www.haomeiwen.com/subject/vxwvhxtx.html