OC_关于Object-C类的创建以及应用
来源:互联网 发布:图片采集软件 编辑:程序博客网 时间:2024/06/17 07:35
oc类的创建与Java或c++在形式上有很大的不同,所以今天我们讲讲如何使用Object-C
来创建一个类、并举例进行一些简单的应用。首先声明本文默认读者有一定的面向对象程序设计的基础。
对类、类的成员变量、类的成员函数以及类对访问权限的控制等的基本概念。如果你对以上有一定的了解,
那么就请继续往下阅读本文。
一、首先我们来列举一个完整的类应该包含哪些成分
1、成员变量
成员变量属于对象由每个对象分别创建仅属于单个对象使用,静态变量属于类由类创建,由类来使用
2、成员方法、静态方法
首先我们看一下类的声明:
二、类的定义与实现
类的定义和实现是分别在两个文件中实现的,其中类的声明实在.h文件中完成而类的定义是在.m文件中实现的
1、在类的声明文件中需要实现
@interface classname : parent
..........//类的定义
@end
看上面的定义可知类的所有定义在以@开头的两串字符串之间
----其中classname就是类的名称
----而parent就是这个类的父类,父类必须要有,如果没有可以使用NSObject作为父类
在声明文件中需要首先声明成员变量
类型名 变量名;
声明的成员变量默认是私有的,在类的外部是不可访问的,所以还要声明成员变量的访问方法
声明方法:
方法的开头是+ 或 - ,+代表函数是一个静态函数通过类来访问,-代表是一个成员方法需要通过对象来访问
其次是函数的返回值类型void为无返回类型或其他各种类型(包括基本数据类型和自定义数据类型),
然后是方法名(要遵循命名规则),然后就是参数列表,如下:
例如一个动态方法
- (void) setParam:(int) age{
...........
}
请注意无论是返回值类型还是参数列表类型,每一个类型都要放在括号中。
2在类的实现文件中需要实现
import"classname.h"
@implementation classname
............//对方法声明的实现
@end
在实现文件中要根据声明文件声明的方法一一实现。
补充:
如果一个方法没有在.h文件中声明,直接在.m文件中实现,那么这个函数就是一个私有的函数,这个函数只能在
类的内部调用而不能再类外调用
接下来我们看下类的定义:
三、自定义构造
oc对于自定义构造方法与Java与C++还是有着很大的不同
我们都知道Java与C++的构造方法是没有返回值的这是因为Java与C++的构造函数名必须与类名一致,一旦编译器认定一
个方法是构造方法就会默认返回本类型。那么既然oc的构造方法有返回值,那就可以理解oc的构造方法理论上是可以随意
命名的。既然oc的构造方法必须返回类型,那么返回的是什么类型呢?毫无疑问当然是他自身的类型,不过由于编程习惯
我们一般将构造的返回值设为(id).好,接下来我们看构造函数的实现。首先我们知道既然要调用构造函数,那就说明此
时对象已经被创建只是还需要构造方法来初始化,那么我们在自定义构造函数内如何初始化本类型的一个对象?其实我们
可以调用本类的父类的构造方法来对对象进行基本的初始化,然后使用初始化后的对象再对自定义类的成员进行初始化。
说了那么多我们来看一个构造函数的基本定义:
-(void)initStudent:(int)newAge.....{
if(self = [super init]){
......
}
return self;
}
四、自定义description函数
我们知道如果要打印Java对象需要重写toString方法,如果要打印C++对象需要自定义<<运算符那么如果要打印oc对象我
们就要重写description方法,由于比较简单我们直接看代码
- NSString description{
........
}
只要将省略号替换为打印对象内容的语句就可以啦
最后我们看下类的使用及结果:
五、点语法
我们知道在Java或C++等绝大多数编程语言中都是使用'.'来调用方法,这个在oc中较为特殊,我们可以使用'.'来调用get/set
方法,假设我们在类内定义了一个变量:int age;
这时我们来定义它的get/set方法
get方法 - (int)getAge{.....; return age;}
set方法 - (void)age:(int)newAge{.......; age = newAge}
假如我们创建了这个类的一个对象stu,那么我们应如何来对age变量操作呢?如下
stu.age = 10; //赋值操作
int i = stu.age; //取值操作
注意上面两行的stu.age不是直接对变量age进行操作而是分明调用了方法getAge、age:进行的操作。
- OC_关于Object-C类的创建以及应用
- OC_浅谈Object-C的内存管理机制
- OC_ 关于NSdictionary NSMutableDictionary以及包装类的使用
- OC_关于protocol的基本应用
- OC_关于catgory的使用
- OC_关于block的使用
- OC_关于NSString的使用
- OC_类的扩展
- Object C 创建类的基本语法
- 关于Object-C有关接口方面的应用
- object-c对象的创建
- [Object-C语言随笔之三] 类的创建和实例化以及函数的添加和调用!
- 黑马程序员---多态的应用以及object类介绍
- Object-c创建自定义类
- OC_关于property、synthesize的使用
- OC_关于NSArray、NSMutableArray的使用
- 关于object-c的基本知识
- Object-c------类的声明与实现以及注意事项
- 互联网时代商业模式也要与时俱进
- 整数相加溢出判断
- Android开发之异步详解(二)之AsyncTask
- Quartus II 9.0正式版下载地址
- codeforces 之 Number of Ways
- OC_关于Object-C类的创建以及应用
- Mac下Eclipse连接不上Android手机的解决方法
- kali linux 7z文件解压
- CSDN CODE平台的使用总结
- ACdream 1417 Numbers
- 开启技术分享之旅
- ARP与ICMP的区别
- 开源精神至今已延续了半个世纪!
- java EE视频下载