随笔:类方法、对象方法

  • 类方法不依赖于对象,执行效率高,但不能访问成员变量
  • 对象方法的执行,需要先使用isa指针访问类,再执行所属类的对象方法
  • 当方法不需要访问成员变量时,首选实现类方法
  • 工具类:基本没有任何成员变量,而且里面的方法基本是类方法
  •   self:指向方法调用者,在对象方法中,self代表着当前对象;在类方法中,self代表着当前类
  •   C语言函数,不能用OC的调用方式去调用,只能通过函数的调用方式去调用。
  •   不允许子类和父类拥有相同名称的成员变量。
  •   每个对象有一个isa指针,指向自己的类,每个类有一个superclass指针,指向自己的父类,每个类有一下subclasses指针,指向自己的子类
  • super 处在对象方法中,那么就会调用父类的对象方法;super如果处在类方法中,就会调用父类的类方法。
  •   有继承才有多态,没有继承就没有多态
  • 多态:父类指针指向子类对象,如:Animal *a = [[Dog alloc] init];

    • 多态调用方法时,是动态绑定的,当多态对象调用方法在Animal和Dog中同名时,会检测对象的真实对象,即真实类型是Dog。
    • 如果方法参数中使用的是父类类型,可以传入父类对象和子类对象。
    • 多态局限性:父类类型的变量 不能 用来调用子类的方法,虽然多态时动态绑定的,能够调用成功(这是OC弱类型、弱语法的一个体现),但是不建议这样调用
    • 我们可以将父类类型的变量强制转换子类类型,然后调用子类方法,如Animal *a = [[Dog alloc]init]; Dog *dd =(Dog *)a; [dd run];
时间: 2024-11-04 20:21:41

随笔:类方法、对象方法的相关文章

self在类方法和对象方法中的应用

谁调用当前方法,self就代表谁 * self在对象方法中,self代表当前对象 * self在类方法中个,self代表类 > self在对象方法中 可以利用self->属性名称的方式访问成员变量 > [self 方法名称]; 调用其它方法(类方法/对象方法)

类方法和对象方法

类方法: 1>加号 + 开头 2>只能由类(名) 来调用 3>类方法中不能访问成员变量 类方法的好处和使用场合 1>不依赖于对象,执行效率高 2>能用类方法,尽量用类方法 3>场合:当方法内部不需要使用到成员变量的时候,就可以改为类方法 对象方法: 1>减号 - 开头 2>只能由对象来调用 3>对象方法能访问当前对象的成员变量(实例变量)

14-oc类方法和对象方法的区别?

对象方法以-开头, 类方法以+开头 对象方法必须用对象调用, 类方法必须用类来调用 对象方法中可以直接访问属性(成员变量), 类方法中不可以直接访问属性(成员变量) 类方法和对象方法可以进行相互调用(展示代码) 对象方法中可以直接调用类方法 类方法中间接调用对象方法 (注意: 不建议这样使用) 类方法中可以直接调用其它类方法 对象方法中可以直接调用对象方法

静态方法与实例方法,类方法与对象方法

最近看资料经常看到上面静态方法之类的说法,仔细查阅资料后总结解释如下: 最最简便的方法就是: 如果方法名字前面的单个减号(-)表明该方法是一个实例方法,也可以称呼为对象方法 如果方法名字前面是一个加号(+),则表明该方法是一个静态(static)方法,也可以称呼为类方法 再则关于静态方法与类方法是一个意思,只是很多人对于这个方法的称呼不一样罢了. 实现部分: 注意:下面的 -(id)init即为构造函数.对应的,还有一个-(void)dealloc方法用来释放资源(类似于析构函数或c#中的dis

OC基础笔记——类方法和对象方法和封装(广州黑马一期)

对象方法: 1.声明和实现方法时候,以 -开头 2.对象方法是隶属于对象,只能通过对象调用 3.对象方法中可以直接访问成员变量,因为对象方法和成员变量都是隶属于该对象的 4.对象方法中可以调用其他对象方法 5.对象方法中也可以调用类方法 类方法: 1.声明和实现的标识符都是 + 2.类方法它是属于类本身的 3.类方法是直接通类名调用的,不能通过对象调用 4.类方法不能访问成员变量,因为成员变量是对象的,不是类的 5.在类方法中不能直接调用对象方法,也就是说不能通过self来调用对象方法 如果你要

OC -- 类方法和对象方法

#import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, retain) NSString *name; @property (nonatomic, assign) int age; - (void)print;       // 对象方法 + (void)introduce;   // 类方法 @end @implementation Person - (void)print{ /

黑马程序员----对象方法和类方法

一.对象方法 1> 减号 - 开头 2> 只能由对象来调用 3> 对象方法中能访问当前对象的成员变量(实例变量) 二.类方法 1> 加号 + 开头2> 只能由类名来调用3> 类方法中不能访问成员变量(实例变量) 注:可以允许类方法和对象方法同名 三.类方法的好处及使用场合 1> 类方法不依赖于对象(不创建对象也可以调用),执行效率高 2> 能用类方法,尽量用类方法 3> 场合:当方法内部不需要使用成员变量时,就可以改为类方法 代码练习: 运行结果:

OC-关于OC中的对象方法和类方法的相互调用1

对象方法和类方法的区别和概念,大家都知道,关于两者之间的相互调用,本人小有总结 #import "NSString+WW.h" @implementation NSString (WW) //类方法------------------------ +(int )numberCountOfString:(NSString *)str{ //    int count=0; //    for (int i=0; i<str.length; i++) { //     char c

类方法与对象方法

js函数式编程确实比很多强语言使用灵活得多,今天抽了点时间玩下类与对象方法调用优先级别,顺便回顾下继承 暂时把原型引用写成继承 先看看简单的两个继承 var Parent = function(){}; var b = new Parent(); Object.defineProperty(b,"Name",{value:"John",writable:true}); var A = function(){}; A.prototype= b; var a = new