1:默認的實例變量的作用域范圍是:這個類體內.默認繼承的實例變量可以直接使用。
2:實例變量的權限控制符號
3:默認是projected
4:oc中只支持單繼承
5:共性的東西放在父類,個性的東西放在子類
修飾符 | 類內部 | 子類 | 任何地方 |
private | yes | | |
projected | yes | yes | yes |
public | yes | yes | yes |
下面使用汽車的繼承關系來演示一下默認的權限(protected)
一:汽車Car.h
// // Car.h // Car // // Created by hmjiangqq on 14-1-22. // Copyright (c) 2014年 hmjiangqq. All rights reserved. // #import <Foundation/Foundation.h> @interface Car : NSObject { @protected //默認權限 int cID; //id float speed; //車速 NSString *name; //名稱 } -(void)run; @end
二:汽車Car.m
// // Car.m // Car // // Created by hmjiangqq on 14-1-22. // Copyright (c) 2014年 hmjiangqq. All rights reserved. // #import "Car.h" @implementation Car //實例化汽車的屬性 -(id)init{ if(self=[super init]){ cID=1000; speed=120; name=@"小汽車"; } return self; } -(void)run{ NSLog(@"start ..."); } @end三:BMW.h
// // BMW.h // Car // // Created by hmjiangqq on 14-1-22. // Copyright (c) 2014年 hmjiangqq. All rights reserved. // #import "Car.h" @interface BMW : Car @end四:BMW.m
// // BMW.m // Car // // Created by hmjiangqq on 14-1-22. // Copyright (c) 2014年 hmjiangqq. All rights reserved. // #import "BMW.h" @implementation BMW -(void)run{ name=@"寶馬"; NSLog(@"car name is %@\n",name); } @endmain.m
// // main.m // Car // // Created by hmjiangqq on 14-1-22. // Copyright (c) 2014年 hmjiangqq. All rights reserved. // #import <Foundation/Foundation.h> #import "Car.h" #import "BMW.h" int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Car *car=[[Car alloc]init]; [car run]; BMW *bmw=[[BMW alloc]init]; [bmw run]; } return 0; }