Objective-C 覆写方法
在接下来的时间里面,我们准备为大家介绍Objective-C中的"覆写方法“。
(1)当子类继承父类时,不可以通过继承来删除或减少父类中的方法,但是,可以对方法进行更改,
而这个更改是指可以改变父类方法中的内容,但是,父类方法的返回类型,方法名,参数的
数量不能改变。
(2)当子类对父类中的方法进行了覆写以后,当子类或子类的对象调用该方法时,就会调用子类中
覆写以后的方法,而不会调用父类中的方法。
接下来,我们结合例子作进一步的学习。
//===================//
//------定义了Role类-----//
//===================//
@interface Role : NSObject
{
int x;
int y;
}
- (void) Move; //移动方法
- (void) MoveY; //Y方向移动的方法
@end
@implementation Role
-(void) Move
{
x = x + 1;
}
-(void) MoveY
{
y = y + 1;
}
@end
//===================//
//-------定义了Man类-----//
//===================//
@interface Man : Role //Man继承了Role类
{
int Mx;
int My;
}
- (void) Move;
@end
@implementation Man
-(void) Move //覆写父类Role中的Move方法,返回类型,方法名,参数部分是没有改变的。
{
Mx = Mx + 1;
My = My + 1;
}
@end
//-------入口函数main-----//
int main (int argc, const char * argv[]) {
Man *m1 = [ [ Man alloc ] init ]; //通过类Man定义了对象m1,并分配了内存空间与初始化。
[ m1 Move ]; //通过对象m1调用了子类中覆写后的Move方法。
在该Move方法中,就执行了Mx = Mx+1 与 My = My + 1 这两行代码。
所以,并没有调用父类Role中的Move方法。
[ m1 MoveY ]; //通过对象m1调用了父类中的MoveY,因为,该方法在子类中没有覆写。
而父类中的MoveY方法就执行了y = y + 1 这行代码。
}
非常好,现在,我们已经掌握了Objective-C中的“覆写方法”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)