黑马程序员——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
原创粉丝点击