黑马程序员——OC学习之类的声明和实现
来源:互联网 发布:东莞买房 知乎 编辑:程序博客网 时间:2024/06/05 19:10
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
以编写一个Person类为例
OC类的声明和实现如下:
Person.h文件中:
#import <Foundation/Foundation.h>@interface Person : NSObject{@public NSString *_name; //姓名 int _age; //年龄@private NSString *_ID; //身份ID}- (void) show; //展示个人信息- (void) runWithMethod:(NSString *)method ; //单个参数- (void) speakWithWords:(NSString *)words AndMood:(NSString *)mood; //2个参数//get方法- (NSString *) name;- (int) age;- (NSString *) ID;//set方法- (void) setNameWithString:(NSString *)name;- (void) setAgeWithInt:(int)age;- (void) setIDWithString:(NSString *)ID;//类方法(静态方法)+ (void) classFunction;@end
Person.m文件中
#import "Person.h"// @implementation 中只是用来实现方法的具体内容@implementation Person// 无参数- (void)show{ NSLog(@"我是%@,年龄%d,ID号是%@",_name,_age,_ID);}// 一个参数- (void)runWithMethod:(NSString *)method{ NSLog(@"我在%@",method);}// 两个参数- (void)speakWithWords:(NSString *)words AndMood:(NSString *)mood{ NSLog(@"我怀着%@的心情,说:%@",mood,words);}// get方法- (NSString *)name{ return _name;}- (int)age{ return _age;}- (NSString *)ID{ return _ID;}// set方法- (void)setNameWithString:(NSString *)name{ _name = name;}- (void)setAgeWithInt:(int)age{ _age = age;}-(void)setIDWithString:(NSString *)ID{ _ID = ID;}//类方法+ (void)classFunction{ //该方法无法访问类的普通成员变量 NSLog(@"类方法驾到");}@end
main.m文件中
#import <Foundation/Foundation.h> //必须要引入的框架#import "Person.h" //再引入自定义的person类的头文件// 普通函数,非类的方法void testWithString(NSString *str){ NSLog(@"打印%@",str );}int main() {[Person classFunction]; //类方法,无需对象即可调用 // 先实例化一个对象,在调用类的方法Person *p =[[Person alloc] init]; [p runWithMethod:@"跑步!"]; //调用类的方法 [p speakWithWords:@"天气真好!" AndMood:@"怪异的"]; p->_name = @"小华"; //可直接使用指针的方式在外部调用public范围的成员变量 p->_age = 15;// p->_ID = @"123"; //private范围的变量无法直接调用 [p setIDWithString:@"456"]; [p show]; testWithString(@"一句话"); //一般函数的调用方法,同c一样 return 0;}
从这3个文件的例子,可以看出如何创建一个oc对象,并在函数中使用,oc对象的创建可以简单写成如下形式:
1. .h文件中只写@interface的声明部分,这部分包含成员变量和类的方法声明。
2. .m文件中是@implementation关键字的实现方法的部分,类的方法要在这里定义实现。
3. 成员变量可以用关键字@public @protected @packaged@privated 修饰,分别限定变量到不同的作用范围,其中@protected是类变量默认的范围
4. 类的方法可以分为对象方法(用 - )和类方法(用 + ),对象方法需要实例化对象后用对象调用,类方法需要用类名直接调用,而且类方法不能使用类的成员变量,oc类中没有类似java中的静态成员变量的概念!
5. oc对象特有的调用方法的方式是形如[p speakWithWords:@"天气真好!"AndMood:@"怪异的"];样子的消息发送机制,只有类中的方法需要这么写,类外边定义的普通函数不管定义还是调用都和c中的一样。
上面这几条基本上是一般的oc类的编写规律,Person类的例子可以当作以后写一般类的模板参考,不过oc的get/set方法还有许多更好的方法来优化。
0 0
- 黑马程序员——OC学习之类的声明和实现
- 黑马程序员—OC学习之类和对象
- 黑马程序员——object-c之类的声明和实现
- 黑马程序员-----OC学习之类的继承和多态
- 黑马程序员-----OC学习之类的封装
- 黑马程序员——OC---面向对象之类和对象
- 黑马程序员——OC笔记之类和对象
- 黑马程序员——OC学习之类的本质和常用的继承自NSObject的方法
- 黑马程序员———OC语言 类的声明和实现
- 黑马程序员---OC基础---类的声明和实现
- 黑马程序员-oc中类的声明和实现
- 黑马程序员------OC中类的声明和实现
- 黑马程序员------oc语言学习笔记之类和对象
- 黑马程序员-----OC学习之类与对象
- 黑马程序员-OC类的声明和实现,以及OC的优势
- 黑马程序员-我的第五篇学习日记:OC#import的作用,类的设计,类的声明和实现
- 黑马程序员——初入oc,关于类的声明与实现
- 黑马程序员——OC语言------类的声明实现、面向对象
- C++开发工具汇总
- 大话数据挖掘第一章1.1-1.5
- 注意mybatis里面外连接的使用方法
- Java基础_super()用法和继承的关系
- 动态修改控件高度
- 黑马程序员——OC学习之类的声明和实现
- linux下的tomcat内存溢出问题解决
- 自动更新组件分享
- 使用ViewPager时,发生内存溢出OOM问题
- hibernate单向关联和双向关联的区别
- DB2 索引整理
- 字典NSDictionary
- [C++]LeetCode: 48 Binary Tree Inorder Traversal
- 在Maven仓库中添加Oracle JDBC驱动