我的OC练习(五)-@property的使用和子类继承的练习
2015-11-09 15:40
375 查看
先贴我的练习代码:
main.m
Dog.h:
Dog.m:
Jiwawa.h:
Jiwawa.m:
运行结果:
子类中实现的时候需要加上@synthesize来引入父类中用@property申明的变量。十分奇怪的是,不作引入的话就无法识别变量名。但有趣的是用super关键字可以引入是可以理解的,但self也可以在不加@synthesize的情况下调用道父类中@property申明的变量,那为什么直接识别变量呢?真是很奇怪。
main.m
// // main.m // 4th // // Created by Morning on 2015/11/09. // Copyright © 2015年 Morning. All rights reserved. // #import <Foundation/Foundation.h> #import "Dog.h" #import "Jiwawa.h" int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... Dog * dog = [[Dog alloc] init]; //通过.来调用存取方法 dog.age=10; dog.weight=12.3; [dog bark]; //通过消息调用存取方法 [dog setAge:11]; [dog setWeight:32.1]; [dog bark]; Dog* jww = [Jiwawa new]; //子类通过.来调用存取方法 jww.age=2; jww.weight=12; [jww bark]; //子类通过消息调用存取方法 [jww setAge:4]; [jww setWeight:21]; [jww bark]; } return 0; }
Dog.h:
// // Dog.h // 1st // // Created by Morning on 2015/11/09. // Copyright © 2015年 Morning. All rights reserved. // #import <Foundation/Foundation.h> @interface Dog : NSObject @property int age;//申明实例变量 @property float weight; -(void)bark;//声明实例方法 @end
Dog.m:
// // Dog.m // 1st // // Created by Morning on 2015/11/09. // Copyright © 2015年 Morning. All rights reserved. // #import "Dog.h" @implementation Dog @synthesize age,weight; -(void)bark{ NSLog(@"我是狗,我%d岁,我重%.2fkg",age,weight); } @end
Jiwawa.h:
// // Jiwawa.h // 1st // // Created by Morning on 2015/11/09. // Copyright © 2015年 Morning. All rights reserved. // #import "Dog.h" @interface Jiwawa : Dog -(void)bark; @end
Jiwawa.m:
// // Jiwawa.m // 1st // // Created by Morning on 2015/11/09. // Copyright © 2015年 Morning. All rights reserved. // #import "Jiwawa.h" @implementation Jiwawa @synthesize age,weight;//这句话可以使子类的对象方法直接调用继承来的变量,如果不写这句话,则需要通过self或super关键字来调用,其实效果一样。 -(void)bark{ NSLog(@"我是吉娃娃,我%d岁,我重%.2fkg。",age, weight);//子类对象调用 } @end
运行结果:
子类中实现的时候需要加上@synthesize来引入父类中用@property申明的变量。十分奇怪的是,不作引入的话就无法识别变量名。但有趣的是用super关键字可以引入是可以理解的,但self也可以在不加@synthesize的情况下调用道父类中@property申明的变量,那为什么直接识别变量呢?真是很奇怪。
相关文章推荐
- 学习参考网站
- [Windows Server 2012] Tomcat安装方法
- 常用linux发行版使用USTC软件源的方法
- Linux文本处理三剑客之grep
- BASH系列(1)――shell类型
- linux rsync同步命令(值得收藏)
- Win10系统80端口被System占用 造成Apache/IIS/Nginx不能启动的解决办法
- Linux下Nagios的安装与配置方法(图文详解)
- Native library not found! Please copy libbdpush_V2_2.so into your project!百度云推送
- iOS使用ffmpeg播放rstp实时监控视频数据流
- jetty、tomcat启动发生异常 java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl
- Ubuntu Linux软件
- 开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
- Linux与JVM的内存关系分析
- shell中各种括号的作用()、(())、[]、[[]]、{}
- 使用vim打开某文件一直出现Swap file ".nginx.conf.swp" already exists!
- Linux学习总结(3)——Linux实用工具
- Linux学习总结(3)——Linux实用工具
- Linux学习总结(3)——Linux实用工具
- Linux实用工具