问题描述
- Objective-c重写问题,求指点
-
oc中的重写是怎样的呢?
子类继承了父类,然后重写父类的方法,父类里的方法没有被覆盖掉啊//这是第一个类 @interface Person : NSObject - (void)work; @end @inplementation Person - (void)work { NSLog(@"工作"); } //这是第二个类 @interface Student : Person @end @implementation Student - (void)work { NSLog(@"该休息了"); } @end //main函数 int main() { Person *p = [[Person alloc] init]; [p work];//这一行打印出的是父类方法,是“工作” Student *s = [[Student alloc] init]; [s work];//这一行打印出来的就是重写后的方法,是“该休息了” [p work]//这一行打印出来还是父类的“工作“啊,没有被覆盖为”该休息了“, //我就想问,[s work];这一行运行过后,父类里面的NSLog照样还是“工作”啊,并没有被覆盖为"该休息了' }
解决方案
子类继承自父类,拥有work方法,重写会覆盖父类的方法,但,这边的覆盖只是针对子类而言,父类并不会被改变。父类可以有很多个子类,子类只能有一个父类。
时间: 2024-10-05 18:51:48