三大特性_继承


继承:

>抽取重复代码

>建立类之间的关系

>子类可以拥有父类中的所有成员变量和方法

>所有类的根类是NSObject ,NSProxy不常用


声明:动物类
@interface Animal : NSObject   //动物继承类NSObject
{
	int _age;
	double _weight;
}
- (void)setAge:(int) age;
- (int)age;
- (void)setWeight:(double)weight;
- (double)weight;
@end
实现:
@implementation Animal
......
@end
声明 :狗类
@interface Dog : Animal;  //狗继承类Animal,相当于拥有了Animal里面的所有成员变量和方法。
@end

注意:

>父类的声明需要写在子类声明之前

>子类和父类不能有相同的成员变量 

> 子类方法可以与父类名相同,调用的时候就近原则。------即重写  

>在某些场合,虽然双方都具有继承逻辑特征,但是,并不适合:这时候需要组合:

@interface Score : NSObject
{
	int  _cScore;
	int  _ocScore;
}
@end
@implementation Score
@end
//继承:XX是一个XXX
//组合:XX 拥有 XXX
@interface Student : NSObject//理论上确实可以继承Score@interface Student : Score,但是不符合道理,此时就要用到组合
{
	Score *score;//组合:把Score当成Student的一部分---->学生拥有成绩
	//int  _cScore;
	//int  _ocScore;
	int _age;
}
@end
@implementation Student
@end

使用super:

使用环境:子类使用父类的方法,并重写父类中的事情加上自己的东西

可以直接调用父类中的方法:

如果super处在对象方法中,就会调用父类中的对象方法。

如果super处在类方法中,就会调用父类中的类方法。————取决于super所在环境

//普通僵尸
@interface Zoombie : NSObject
- (void)walk;
- (void)test;
+ (void)test;
@end
@implementation Zoombie
- (void)walk
{
	NSLog(@"Zoombie Walk");
}
- (void)test
{
	NSLog(@"Zoombie + test");
}
+ (void)test
{
	NSLogg(@"Zoombie - test");
}
//跳跃僵尸
@interface JumpZoombie : Zoombie
+ (void)testjump;
@end
@implementation JumpZoombie
+ (void)testjump
{
	[super test];
}
- (void)walk
{
	NSLog(@"JumpZoombie  Jump");
	[super walk];//在自己的walk中引用了父类的walk方法
}
//主函数
int main(){
	[JumpZoombie testjump];
	JumpZoombie *p=[JumpZoombie new];
	[p walk];
}


注意:super不知不止可以调用对象方法,还可以调用累方法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值