笨……笨

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;

}

posted on 2012-07-28 10:22  笨……笨  阅读(296)  评论(0)    收藏  举报

导航