• oc-14-对象方法调用类方法


    Person.h

    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    {
        @public
        int _age;
        
        float _weight;  // 运动1次,就去吃饭.
    }
    // 让人运动
    - (void)sport;
    
    // 让人吃
    - (void)eat;
    
    
    // 让人运动
    + (void)sport;
    
    // 让人吃
    + (void)eat;
    
    
    //对象方法
    - (void)study;
    
    //类方法
    + (void)study;
    
    
    @end

    Person.m

    #import "Person.h"
    
    @implementation Person
    // 让人运动
    - (void)sport
    {
        NSLog(@"这个人运动--对象方法");
        
        // 在对象方法当中调用类方法
        [Person eat];
    }
    
    // 让人吃
    - (void)eat
    {
        NSLog(@"这个人吃东西--对象方法");
    }
    
    // 让人运动
    + (void)sport
    {
        NSLog(@"这个人运动--类方法");
        
        // 在本方法中,不能用self调用自己的方法.会死循环.
        [self sport];
    }
    
    
    // 让人吃
    + (void)eat
    {
        NSLog(@"这个人吃--类方法");
    }
    
    //对象方法
    - (void)study
    {
        NSLog(@"%d年龄的人学习--对象方法",_age);
    }
    
    //类方法
    + (void)study
    {
        NSLog(@"类方法");
    }
    
    @end
    /**
     类方法:由类调用的方法
     
     1.类方法的局限性:
       不能访问成员变量.
     
     2.类方法的优势:
       不依赖对象.不占用内存空间.节约内存可以不创建对象。
     
     3.对比对象方法和类方法
     1)格式:
     对象方法: - (返回值类型)方法名:(参数类型)参数名称;
     类方法:   + (返回值类型)方法名:(参数类型)参数名称;
     
     2)调用者
     对象方法:必须创建对象,由对象来调用.
     类方法:不依赖于对象,由类直接调用.
     
     练习:设计1个计算器,有加法减法乘法除法,用类方法不依赖于对象.
     
     
     报错信息:
     unrecognized selector sent to class 0x1000046c8 某个方法找不到.
     */
  • 相关阅读:
    leetcodedp72
    leetcodedp122
    leetcodedp714
    leetcodedp198
    leetcode518dp背包
    leetcodedp188
    leetcodedp309
    leetcodedp583
    leetcode123
    leetcodedp213
  • 原文地址:https://www.cnblogs.com/yaowen/p/5308377.html
Copyright © 2020-2023  润新知