oc 面向对象特性(接口,实现,方法发送,访问成员变量)
来源:互联网 发布:python基本命令 编辑:程序博客网 时间:2024/06/09 18:32
概述
Objective-C作为一种面向对象的编程语言,具有面向对象的基本特征,即:封装、继承和多态。主要介绍Objective-C中有关面向对象基本概念:类、对象、方法和属性等。
Objective-C中的类
类是Objective-C中的一种重要的数据类型,是组成Objective-C程序的基本要素。Objective-C的类声明和实现包括两个部分:接口部分和实现部分。
@interface Song: NSObject { ......}......@end@implementation Song ......@end
接口部分
使用关键字@interface,主要定义了类名、继承的父类、实现的协议、成员变量和方法等信息。下面的代码是Song类的接口部分声明。
@interface Song : NSObject { NSString *title; NSString *artist; long int duration;}- (void)start;- (void)stop;- (void)seek:(long int)time;@end
实现部分
使用关键字@implementation,主要实现了在接口部分定义的方法等信息。下面的代码是Song类的实现部分声明。
@implementation Song- (void)start { //开始播放}- (void)stop {//停止播放 }- (void)seek:(long int)time { //跳过时间} @end
方法和消息
Objective-C中方法定义非常古怪,它遵循了SmallTalk语法风格,它将一个方法名字分成几个部分。
说明:
•定义了两个参数的方法,第一个参数是anObject,参数类型是id类型,第二个参数是index,参数类型是NSUInteger,这叫做多重参数。它的返回类型是void,方法签名是insertObject:atIndex:。方法类型标识符中都“-”代表方法是实例方法,“+”代表方法是类方法,关于实例方法和类方法我们将在后面内容中讨论。如果上面的方法变成C或C++形式,则是下面的样子的:
•-(void) insertObjectAtIndex(id anObject, NSUInteger index)
消息发送
对于方法的调用通常也不称之为调用,而是称为发出消息,操作符号不是“.”而是“[⋯]”,如下所示:
[myObject insertObject: ojb1 atIndex:0];
即向myObject对象发出一个消息insertObject:atIndex:。而在实际使用时候这两种叫法都会用,这不是严格划分。
访问成员变量
从面向对象的封装角度考虑问题,要想访问类中的成员变量,是要通过方法访问的,成员变量前面要有作用域限定符(protected, public, private),这些存取权限修饰符我们将在后面介绍。
成员变量的访问,是通过读取方法(getter)和设定方法(setter)。
Song.h文件:
@interface Song : NSObject { NSString *title; NSString *artist; long int duration;}//操作方法- (void)start;- (void)stop;- (void)seek:(long int)time;//访问成员变量方法- (NSString *)title;- (void)setTitle:(NSString *)newTitle;- (NSString *)artist;- (void)setArtist:(NSString *)newArtist; - (long int)duration;- (void)setDuration:(long int)newDuration; @end
@implementation Song- (void)start {//开始播放 - (void)stop {//停止播放- (void)seek:(long int)time {//跳过时间 ... ...
//访问成员变量方法- (NSString *)title { return title;}- (void)setTitle:(NSString *)newTitle { title = newTitle;}- (NSString *)artist { return artist;}- (void)setArtist:(NSString *)newArtist { artist = newArtist;}- (long int)duration { return duration;}- (void)setDuration:(long int)newDuration {} @end
小结
采用了封装之后就可以通过存取方法访问属性,例如[mySong title]是取得title成员变量内容。
如果不考虑封装的问题,单从技术上讲Objective-C,可以直接通过对象访问成员变量的,访问操作符是“->”,例如:mySong->title,也可以取得title成员变量的内容。
- oc 面向对象特性(接口,实现,方法发送,访问成员变量)
- oc 面向对象特性(实例成员变量作用域限定符,类变量和类方法)
- oc 面向对象特性(属性,构造方法)
- OC面向对象特性
- C#-面向对象的三大特性——封装(封装成员变量、封装成员方法)
- 面向对象(成员变量)
- ios开发-OC面向对象的三个特性-封装方法
- OC 成员变量与方法
- oc面向对象—实例变量以及set get方法
- OC语言学习 (二) 创建OC对象类、成员/静态变量、对象/类方法
- OC基础之创建OC对象类、成员/静态变量、对象/类方法
- OC-类的声明与实现、方法的声明与实现、面向对象的三大特性之封装
- 面向对象成员变量和多态方法
- Java面向对象详谈——方法与成员变量
- 面向对象之定义类、成员变量和方法
- 面向对象成员变量规则
- 访问C++类对象中私有成员变量的方法
- 【Java】java使用反射访问对象方法和成员变量
- 【String】#65 A. Way Too Long Words
- Android源码分析之原型模式
- vs2008 包加载出错问题解决方案
- 程序员总结:帮助你早些明白一些道理
- 宏锦软件程序员入行必须明白的道理
- oc 面向对象特性(接口,实现,方法发送,访问成员变量)
- C语言-指针和字符串
- ant打包工具详细介绍
- 中水处理设备:小区中水回用设备技术特点简介
- 总结一下知识点
- 中文注释 MariaDB my.cnf 大型服务器配置模板
- UVALive 5220 Internet Bandwidth(最大流,模板题)
- 蓝牙 OOB
- CentOS7+Tomcat 生产系统部署