自定义类
{
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指令可以在子类中引用并修改母类方法返回的结果。