@interface Car : NSObject
{
@protected
int cID; //id
@public
NSString *name; //名称
// @private
float speed; //车速
}
- (void) run;
@end
@implementation Car
- (id) init
{
if (self = [super init]) {
cID = 1000;
speed = 120;
name = @"小汽车";
}
return self;
}
- (void) run {
NSLog(@"start");
}
@end
//新建一个宝马汽车类,让他继承汽车类
@interface Bmw
@end
@implementation Bmw
- (void) run
{
name = @"宝马";
NSLog(@"car's name is %@", name);
}
@end
在main中测试
Car *car = nil; //静态类型
car = [[Car alloc] init];
[car run];
id car2;
car2 = car;
car->name = @"小车"; //公共的实例变量
// car->speed = 100; //私有实例变量
Bmw *bmw = [[Bmw alloc] init];
[bmw run];
if ([audi isKindOfClass:[Car class]]) {
NSLog(@"audi is a kind of Car");
}
if ([audi isMemberOfClass:[Car class]]) {
NSLog(@"audi is a memberof Car");
}
if ([car isMemberOfClass:[Car class]]) {
NSLog(@"car is a memberof Car");
}
//对象是否响应@selector指定的方法
if ([car RespondsToSelector:@selector:(run)]) {
NSLog(@"car responds to run method");
}
SEL action;
action = @selector(run);
[car performSelector:action];
//等同于
// [car performSelector:@selector(run)];
//判断某个类是否是该类的子类
if ([Benz isSubClassOfClass:[Car class]]) {
NSLog(@"benz is subclass of Car");
}
//判断两个对象是否是同一类型
if ( [Audi class] == [Benz class] ) {
NSLog(@"audi and benz is the same class");
}
//OC的异常处理
@try {
[car noSuchMethod];
}
@catch (NSException *exception) {
NSLog(@"catch exception %@ %@", [exception name], [exception reason] );
//编写代码,记录这个日志
}
@finally {
//...
}