类的继承
来源:互联网 发布:儿童摄影后期制作软件 编辑:程序博客网 时间:2024/05/16 01:29
类的继承
#import <Foundation/Foundation.h>
@interface FKFruit :NSObject
@property(nonatomic,assign)double w;
-(void)foo;
@end
#import "FKFruit.h"
@implementation FKFruit
@synthesize w;
-(void)foo
{
NSLog(@"i am a apple %gg",w);
}
@end
#import <Foundation/Foundation.h>
#import "FKFruit.h"
@interface FKApple :FKFruit
@end
#import "FKApple.h"
@implementation FKApple
@end
#import <Foundation/Foundation.h>
#import "FKApple.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
FKApple* a=[[FKApplealloc]init];
a.w=56;
[a foo];
}
return 0;
}
#import <Foundation/Foundation.h>
@interface FKBird :NSObject
-(void)fly;
@end
#import "FKBird.h"
@implementation FKBird
-(void)fly
{
NSLog(@"我在天空中自由的飞翔");
}
@end
#import <Foundation/Foundation.h>
#import "FKBird.h"
@interface FKOstric :FKBird
@end
#import "FKOstric.h"
@implementation FKOstric
-(void)fly
{
NSLog(@"我只会跑");
}
@end
#import <Foundation/Foundation.h>
#import "FKOstric.h"
int main(int argc,constchar * argv[]) {
@autoreleasepool {
FKOstric* a=[[FKOstricalloc]init];
[afly];
}
return0;
}
#import <Foundation/Foundation.h>
@interface FKPerent :NSObject
{
int _a;
}
@property (nonatomic,assign)int a;
@end
#import "FKPerent.h"
@implementation FKPerent
@synthesize a=_a;
-(id)init
{
if(self=[superinit])
{
self->_a=5;
}
return self;
}
@end
上面程序中使用了@property定义名为a的属性,并指定这个名为a的属性操作_a的成员变量;
#import <Foundation/Foundation.h>
#import"FKPerent.h"
@interface FKSub : FKPerent
-(void)acc;
@end
#import "FKSub.h"
@implementation FKSub
{
int _a;
}
-(id)init
{
if(self=[superinit])
{
self->_a=7;
}
return self;
}
-(void)acc
{
NSLog(@"子类中_a:%d",_a);
NSLog(@"父类中_a:%d",super.a);
}
@end
#import <Foundation/Foundation.h>
#import "FKSub.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
FKSub* sub=[[FKSub alloc] init];
[sub acc];
}
return 0;
}
从上面的代码可以看出,程序通过super关键字强制指定调用父类的a属性,通过这种方式可以访问到父类中被隐藏的成员变量。从上面的运行结果可以看到:子类实现部分定义与父类同名的成员变量,只会隐藏父类的成员变量,但该对象内部依然有两块内存来保存_a的成员变量,一块内存保存在父类中被隐藏的_a成员变量,可以通过父类中定义的方法来访问;一块是保存在实现部分定义的_a成员变量,可以再子类方法中直接访问。
- c++类的继承:私有继承,公有继承,保护继承
- 类的继承 保护继承和私有继承
- C#类的继承-什么是继承
- 继承QVector----模板类的继承
- 类的一般继承与虚继承
- 继承:单继承、派生类成员的访问属性、多继承、菱形继承、虚继承,菱形虚拟继承
- java 类的继承
- 类的继承
- C#类的继承
- JavaScript类的继承
- C++ 类的继承
- 类的继承
- Java类的继承
- 类的继承
- 抽象类的继承
- 类的继承
- 类的继承用法
- 类的继承方式
- CPU及各种设备数据速度
- STM32时钟初始化研究
- C++中关于操作符重载诸多问题
- Android的进程优先级
- 最大连续子数组和
- 类的继承
- 整理一下页面跳转的几种实现方式
- Fragment学习
- 蓝桥杯总决赛体会
- C++程序设计课本习题
- js中的全局变量和局部变量
- python使用mahotas包实现椒盐攻击
- lua math库
- Java基础之各种数据类型在内存中的存储方式