【黑马程序员】Objetive-C 对象详解 一
来源:互联网 发布:电信网络能申请外网吗 编辑:程序博客网 时间:2024/05/16 00:31
1、对象的定义
interface 声明:用于声明类所拥有的方法和成员变量
implementation 实现: 方法的具体实现
一个简单的类实现
@interface Person : NSObject{ char *_name;}- (void)setName:(char *)name;- (char *)name;@end@implementation Person// setter- (void)setName:(char *)name{ _name = name;}// getter- (char *)name{ return _name;}@end
事实上,有过其它编程语言基础的童鞋看起来oc的语法很奇怪,就拿类的定义来说,一般编程语言都是以class开头直接进行定义,但oc因为有c基因的缘故,所以保留了声明+实现的方式来进行定义,另外,譬如方法前面的加号和减号的区别我们后文再详解。
2、成员变量的作用域
一般来说,我们定义一个对象,对成员变量的赋值进行控制,或者对某些成员变量进行保护,使其只能在一定作用域内被访问,我们就可以用到oc的@public、@private和@protected关键字。
事实上,这三个词在其它面向对象语言中也十分常见,除了oc关键字前特有的@符号之外,没有什么特别之处。
他们的作用域分别是:
关键字本类子类外部@private√××@protected√√×@public√√√
值得注意的是,oc中作用域关键字并不一定要写在成员变量声明前面,来看一个例子:
@interface Student : NSObject{ @public int sex; // public int age; // public @private int class; // private int no; // private}
在这个类的定义中,我们在成员变量开头使用了@public,标志着在这一行后直到遇到下一个private或者protected之前,中间这些变量都是public,公共变量。
也就是说,在上面这个类中,sex和age都是可以外部进行访问的。
但此后我们使用了@private关键字重新进行声明,两个作用,1、告诉编译器,public的在这结束了,2、private的成员变量在此开始。
这一点有很大的不同。
另外,如果我们不对成员变量作用域进行显式声明,那么这个成员变量的作用域就是private。
3、类方法与对象方法
怎么样,听到这名字有没有觉得有点高大上。事实上,类方法与对象方法就是我们熟知的静态方法和实例方法,两种叫法都比较贴切,但是oc里习惯性的叫做类方法和对象方法。
类方法以 + 号开头,表明声明体后面是一个类方法,类方法不需要实例化即可进行访问
对象方法以 - 号开头,顾名思义,对象方法需要得到对象的实例后才能进行调用
#import <Foundation/Foundation.h>@interface Person : NSObject+ (void)sayHello;- (void)sayWorld;@end@implementation Person+ (void)sayHello{ NSLog(@"Hello!");}- (void)sayWorld{ NSLog(@"World!");}@endint main() { [Person sayHello]; // Hello! Person *o = [Person new]; [o sayWorld]; // World! return 0;}
0 0
- 【黑马程序员】Objetive-C 对象详解 一
- 黑马程序员--面向对象(一)
- 黑马程序员---面向对象一
- 黑马程序员---面向对象一
- 黑马程序员--面向对象(一)
- objetive c 学习:实例变量
- objetive-c 谓词学习笔记
- 黑马程序员--C#面向对象(一)
- 黑马程序员—java面向对象一
- 黑马程序员 面向对象(一)
- 黑马程序员----面向对象总结一
- 黑马程序员_JAVA_面向对象(一)
- [黑马程序员]--Java语言面向对象(一)
- 黑马程序员 java面向对象(一)
- 黑马程序员-基础-面向对象一
- 黑马程序员_面向对象(一)
- 黑马程序员 Java 面向对象一
- 黑马程序员 面向对象学习笔记一
- Performance Insights to Intel® Hyper-Threading Technology
- 数组的行列变换
- 黑马程序员--单例模式与模板方法模式
- HTML第五节(为网页插入图片)
- Sicily 1363. Semi-prime H-numbers
- 【黑马程序员】Objetive-C 对象详解 一
- 编程之美:中国象棋将帅问题(开篇)
- 出现 encountered * errors during the transfer 错误
- tesseract在ok6410下的实现(一)
- CAS单点登录源码解析之【客户端】
- POJ Out of Hay(2395 prim最小生成树)
- Java中获取当前时间的类
- Android消息队列模型——Thread,Handler,Looper,Massage Queue
- ios多线程操作(三)—— 线程通讯