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 某个方法找不到.
 */
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5308377.html,如需转载请自行联系原作者

相关文章
|
15天前
在类中使用静态方法和实例方法有什么区别?
在类中合理地使用静态方法和实例方法,可以更好地组织和管理代码,提高代码的可读性、可维护性和性能,根据具体的业务需求和逻辑来选择使用哪种方法是编写高质量面向对象代码的关键。
|
6月前
调用反射类的方法
调用反射类的方法
|
6月前
调用反射类的指定方法
调用反射类的指定方法
|
缓存 Java iOS开发
OC中动态方法解析
OC中动态方法解析
51 1
|
Java
Java 类(私有属性、对象方法、类方法,构造函数)
Java 类(私有属性、对象方法、类方法,构造函数)
124 0
方法引用符、引用类方法、引用对象的实例方法、引用类的实例方法及引用构造器
方法引用符、引用类方法、引用对象的实例方法、引用类的实例方法及引用构造器
91 0
对象实例化错误
对象实例化错误
120 0
|
存储 设计模式 JavaScript
对象方法和方法中的 "this"
对象方法和方法中的 "this"
130 0
对象方法和方法中的 "this"
|
iOS开发
OC中的内省方法(Introspection)
OC中的内省方法(Introspection)
157 0
如何通过反射调用对象的方法?
import java.lang.reflect.Method; class MethodInvokeTest { public static void main(String[] args) throws Exception { ...
1120 0