Objective-C中的继承
Objective-C中的继承相比JAVA要简单的多,JAVA中的所有的类都有一个基类Object。Objective-C中类的基类为id(对象指针类型),Objective-C中也有一个与JAVA中Object类类似的类NSObject,一般情况下自定义的类要继承自NSObject。
#import <Foundation/Foundation.h>
//部件类 作为汽车部件的父类
@interface Part : NSObject
{
//品牌名称
NSString *brandName;
//使用年限
intyear;
}
//设置品牌名称
-(void) setBrandName: (NSString *) brandName;
//获取品牌名称
-(NSString *) brandName;
//设置使用年限
-(void) setYear: (int) year;
//获取使用年限
-(int) year;
@end//Part
@implementation Part
//设置品牌名称
-(void) setBrandName: (NSString *) name
{
brandName = name;
}
//获取品牌名称
-(NSString *) brandName
{
returnbrandName;
}
//设置使用年限
-(void) setYear: (int) y
{
year = y;
}
//获取使用年限
-(int) year
{
returnyear;
}
@end//Part
//轮胎类
@interface Tire : Part
{
//轮胎最大压力
intmaxPressure;
}
//设置最大压力
-(void) setMaxPressure: (int) maxPressure;
//获取最大压力
-(int) maxPressure;
@end//Tire
@implementation Tire
//设置最大压力
-(void) setMaxPressure: (int) pressure
{
maxPressure = pressure;
}
//获取最大压力
-(int) maxPressure
{
returnmaxPressure;
}
@end//Tire
//引擎类
@interface Engine : Part
{
intmaxPower;
}
//设置最大马力值
-(void) setMaxPower: (int) maxPower;
//获取最大马力值
-(int) maxPower;
//对象描述方法
-(NSString *) description;
@end//Engine
@implementation Engine
//设置最大马力值
-(void) setMaxPower: (int) power
{
maxPower = power;
}
//获取最大马力值
-(int) maxPower
{
returnmaxPower;
}
//对象描述方法
-(NSString *) description
{
return@"我是的引擎";
}
@end//Engine
//汽车类
@interface Car : NSObject
{
Engine *engine;
Tire *tires[4];
}
//设置汽车引擎
-(void) setEngine: (Engine *) engine;
//获取汽车的引擎
-(Engine *) engine;
//设置汽车轮胎
-(void) setTire: (Tire *) tire
atIndex: (int) index;
//获取汽车的轮胎
-(Tire *) tireAt: (int) index;
//安装汽车引擎
-(void) installEngine;
//安装汽车轮胎
-(void) installTires;
@end//Car
@implementation Car
//设置汽车引擎
-(void) setEngine: (Engine *) e
{
engine = e;
}
//获取汽车引擎
-(Engine *) engine
{
returnengine;
}
//设置汽车轮胎
-(void) setTire: (Tire *) t
atIndex: (int) i
{
if (i < 0 || i > 3) {
NSLog(@"你设置的轮胎位置不正确");
exit(1);
}
tires[i] = t;
}
//获取汽车的轮胎
-(Tire *) tireAt: (int) i
{
if (i < 0 || i > 3) {
NSLog(@"您选择的轮胎位置不正确");
exit(1);
}
return tires[i];
}
//安装汽车引擎
-(void) installEngine
{
NSLog(@"安装 %@ 品牌引擎,使用年限为 %d,最大马力为 %d 马",
[engine brandName], [engine year], [engine maxPower]);
}
//安装汽车轮胎
-(void) installTires
{
for(int i = 0; i < 4; i++)
{
NSLog(@"在第 %d 个位置上轮胎的品牌是 %@ ,使用年限为 %d,最耐压值为 %d",
i + 1, [tires[i] brandName], [tires[i] year], [tires[i] maxPressure]);
}
}
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePoolalloc] init];
// insert code here...
//NSLog(@"Hello, World!");
Part *part;
Car *car;
car = [Car new];
part = [Engine new];
[part setBrandName: @"德国宝马"];
[part setYear: 20];
[part setMaxPower: 250];
//汽车设置引擎
[car setEngine: part];
Tire *tires[4];
part = [Tire new];
[part setBrandName: @"中国朝阳"];
[part setYear: 2];
[part setMaxPressure: 1500];
tires[0] = part;
part = [Tire new];
[part setBrandName: @"五羊"];
[part setYear: 5];
[part setMaxPressure: 2000];
tires[1] = part;
part = [Tire new];
[part setBrandName: @"日本丰田"];
[part setYear:8];
[part setMaxPressure: 3000];
tires[2] = part;
part = [Tire new];
[part setBrandName: @"中国钻石"];
[part setYear: 3];
[part setMaxPressure: 1800];
tires[3] = part;
for(int i = 0; i < 4; i++)
{
[car setTire: tires[i] atIndex: i];
}
[car installEngine];
[car installTires];
[pool drain];
return 0;
}
浙公网安备 33010602011771号