OC学习记录3:类

来源:互联网 发布:阿里云服务器有发票吗 编辑:程序博客网 时间:2024/06/06 00:05

自定义类

{

    float _heightInMeters;

    int _weightInKilos;

}

创建abc.h以及abc.m文件,在.h文件中,在.h文件中定义实例变量。


-(float)heightInMeters;

-(void)setHeightInmeters:(float)h;

-(int)weightInKilos;

-(void)setWeightInkilos:(int)w;


-(float)bodyMassIndex;

继续在.h文件中创建实例方法,-( )中标明实例方法返回值的类型,:后面表示传入次类方法的参数。


- (float)heightInMeters

{

    return _heightInMeters;

}


- (void)setHeightInmeters:(float)h

{

    _heightInMeters = h;

}

.m文件中创建实例方法的具体执行语句,其中heightInMeters属于取方法,可以读取实例变量的值。而setHeightInmeters是存方法,可以为相应的实例变量赋值。


属性

@property (nonatomic) float heightInMeters;

@property(nonatomic) int weightInKilos;

这里没用使用存取方法,而是直接定义了nonatomic这一属性,通过这个属性系统会自动给方法增加存方法和取方法。还有其他属性,例如readwrite(读写属性),由于读写属性是默认属性所以不需要特别说明(原子型是默认属性)。使用属性可以简化代码。


继承

@interface class : NSObject

@interface class : abc

不同类之间可以相互继承,例如之前的示例我们自定义的abc类在创建文件时xcode默认继承NSObject类(在abc.h中会自动创建第一条代码),这时候我们再新建一个qwe类,在创立类的时候将默认的NSObject类改为abc类(在qwe.h中会自动创建第二条代码),这样的话qwe类则可以拥有abc类所有的方法和属性,但是qwe类中的属性和方法不会出现在abc类中。同样因为abc类继承NSObject类,所以qwe类可以认为同样继承NSObject类。


覆盖方法

-(float) bodyMassIndex

{

    return 19;

}

在子类中,可以覆盖母类继承下来的方法。可以直接在.m文件中直接引用母类的方法并且覆盖(即修改此方法返回的结果)。


Super


- (float) bodyMassIndex

{

    float normalBMI = [super bodyMassIndex];

    return normalBMI * 0.9;

}

前面提到了覆盖方法,那么如何引用并改变母类方法返回结果呢,这里就要用到super指令,使用super指令可以在子类中引用并修改母类方法返回的结果。

0 0
原创粉丝点击