• 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;
    }
  • 相关阅读:
    Python的学习之旅———UDP
    Python的学习之旅———socket ,socketserver
    Python的学习之旅———time 模块
    python的学习之旅---面向对象
    Python的学习之旅———re 模块正则表达式
    有事没事找高宇哥聊天,李泽军爸妈聊天,管那么多人干嘛,活好自己
    还有教师观没有记
    Navicat中怎么查看数据库密码
    Oracle 删除用户时出现异常ora-01922: CASCADE must bu specified to drop 用户名
    kali使用sqlmap注入dvma
  • 原文地址:https://www.cnblogs.com/yaowen/p/7413192.html
Copyright © 2020-2023  润新知