OC-对象方法/类方法/self/super(1)

来源:互联网 发布:java 代码保护 编辑:程序博客网 时间:2024/06/06 00:28

1.在Objective-C中,对象方法类比于Java的静态方法和对象方法.代码如下

-声明

  2014-06-05 10:18:50#import <Foundation/Foundation.h>@interface Student : NSObject//每个学生拥有学习的行为+ (void) study;// spendMoney: 称为方法名//(int)price 称为参数//(void)称为返回参数,必须用括号括起来- (void) spendMoney:(int)price;@end

-定义

#import "Student.h"@implementation Student+ (void) study{    NSLog(@"All student can study!");}- (void) spendMoney:(int)price{    NSLog(@"student spend %d yuan!",price);}@end

-调用

//类方法调用[Student study];//匿名对象方法的调用[[[Student alloc] init] spendMonery:20];

2.self/super:作为特殊的内置指针,谁调用指向谁(类/对象)

Student.h

#import <Foundation/Foundation.h>@interface Student : NSObject{    @public    int _price;}//每个学生拥有学习的行为+ (void) study;// spendMoney: 称为方法名//(int)price 称为参数//(void)称为返回参数,必须用括号括起来- (void) spendMoney:(int)price;@end

Student.m

#import "Student.h"@implementation Student+ (void) study{    NSLog(@"All student can study!");}- (void) spendMoney:(int)price{    //同样,类调用时self指向的是类,对象调用时self指向的是对象,    //self同时可以指向类和对象的属性 也可以作为方法的调用的指针    //当指向属性时,无论是其本身还是父类的属性.    //因为在内存加载的时候首先会把对象的所有属性加载进来    self->_price=price;    NSLog(@"student spend %d yuan!",self->_price);}@end

Academican.h

#import <Foundation/Foundation.h>#import "Student.h"@interface Academician : Student@end


Academican.m

#import "Academician.h"@implementation Academician+ (void) study{    //1.当外部调用为对象时 super指向的是对象,当外部调用为类时 super指向的是类    //2.super只能用来调用方法 不能用来作为指向属性的指针即super->_price 是 错误的     [super study];    NSLog(@"All Academician can study!");}- (void) spendMoney:(int)price{    NSLog(@"Academician spend %d yuan!",price);}@end



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 紫癜肾炎长期尿潜血怎么办 肾移植后血压高怎么办 尿道长了个肿瘤怎么办 吃了有病的鹅怎么办 狗狗得了乳腺瘤怎么办 孕28周还是臀位怎么办 怀孕五个月胎位不正怎么办 33周了胎位不正怎么办 足月胎儿不足5斤怎么办 绒癌观察期怀孕怎么办 宝宝囱门闭合晚怎么办 慢性硬脑膜下血肿复发怎么办 佝偻病导致囟门晚闭怎么办 儿童液体补多了怎么办 脑脊液鼻漏3年了怎么办 结石掉到膀胱里怎么办 肾结石引起的腰疼怎么办 肾结石小但很疼怎么办 狗狗得了尿结石怎么办 生理期第四天必须游泳怎么办 碎石后吐的厉害怎么办 白细胞高红细胞高血尿怎么办? 早期肾癌术后复发该怎么办 肾结石因运动引起尿血怎么办 宝宝大便镜检阳性潜血怎么办 尿不尽刺痛带血怎么办 狗狗拉肚子拉血怎么办 肾血肿怎么办才吸收快 体检尿蛋白高3怎么办 肾炎会引起脸肿怎么办 12小孩尿蛋白3是怎么办 肝癌介入手术后肝功能不好怎么办 屁多且臭便秘怎么办 肝癌术1年后复发怎么办 怀孕便秘怎么办或大便太干拉不出 肠鸣便秘怎么办多尿 奥司他韦过量怎么办 憋的时间长尿痛怎么办 手过敏了怎么办最简单 肾结石不痛但是有血尿怎么办 儿童医院血液科挂不到号怎么办