• 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;
    }
  • 相关阅读:
    排序算法---堆排序

    排序算法---希尔排序
    简单排序算法
    Jave 垃圾回收查看工具--jstat
    Linux 查看进程IO状态
    vittualenv 和mkvirtualenv
    服务器被当作了肉机去挖矿的解决办法
    pycharm的函数注释 和 父子组件传递
    git初始化操作
  • 原文地址:https://www.cnblogs.com/yaowen/p/7413061.html
Copyright © 2020-2023  润新知