oc继承
继承:子类 父类 单继承
如果需要在自己创建的类或者系统提供的类当中添加某一属性或者方法,只需继承这个类即可;
@interface Person : NSObject{ @private//不允许外部访问 子类无法继承 int age; @public//外部允许访问 子类可以继承 NSString *address; @protected//不允许外部访问 子类可以继承 NSString *name; }
继承的方法的执行路径:先在子类中寻找,如果没有再依次往上查找,直到最上层,如果还没有找到 那就会报错 那么这个方法可能不存在或者没有实现
Children 继承于 Person
#import "Person.h" @implementation Person -(void)test1{ NSLog(@"我在父类中"); } @end
#import "Children.h" @implementation Children -(void)test2{ NSLog(@"%@ %@ ",name,address); } //继承的寻找路径自下而上 -(void)test1{ NSLog(@"我在子类中"); } @end
#import "Park.h" @implementation Park -(void)play:(Person *)people{ NSLog(@"我在公园玩"); } @end
继承子类可以自动的向上转换 子类向父类转换
#import <Foundation/Foundation.h> #import "Person.h" #import "Children.h" #import "Park.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *xiaowang=[Person new]; Children *xiaoming=[Children new]; Park *park = [Park new]; [xiaowang test1];//输出:我在父类中 [xiaoming test1];//输出:我在子类中 [park play:xiaoming];//原类为Person 但是Children 继承它之后也能用,即向上转换 也仅能向上转换 //输出:我在公园玩 } return 0; }