一、什么是面向对象?
提到面向对象,就要知道两个概念,一个是类,一个就是对象。
类:
类定义了一个事物的抽象特点,比如事物的属性和一些行为。比如“狗”这个类,就会有一些基础的属性,它毛的颜色,它的个头,它的性别等;也会有它的一些行为,比如是否可以生育,是否会咬人等等。类的作用就是为程序提供出一个模板,类里的属性称作成员,行为称作方法。
对象:
对象就是类的实例,通过类创建出来对象。比如“狗”这个类列举了狗的属性和行为,但是它无法实现,它没有颜色,没有身高,不能叫唤等等。而对象就是把这些属性和行为具体化,比如一条叫Tom的黄色的狗。
需要注意的是,当创建一个类的时候,系统不会给他分配存储空间,只会给对象分配,可以想象,抽象的类当然是不需要内存的,但是具体的对象则是需要的。
面向对象和面向过程的区别
面对过程:注重的是步骤
面对对象:注重的是对象
先设计好类,利用类来设计多个对象,类就相当于图纸
类名/属性/行为
二、OC中的类
1、类的声明
——包括类的成员变量、方法、类方法的声明
}
//方法的声明
- (类型)方法名;
@end
(2)、说明:
1)、NSObject是OC库中基类,可以让声明的类具备创建对象的能力;
2)、成员变量必须放在{ }中,方法的声明必须放在{ }外,两者都要放在@interface和@end之间;
3)、声明的成员变量默认初始化为0;
4)、@public:使类创建的对象的成员变量可以被外界访问,没有则默认为protected;
2、类的实现
——包括对象方法、类方法的实现
(1)、一般形式:
@implementation
- (类型)方法名
{
}
+ (类型)方法名
{
}
@end
例如:
三、OC对象
1、对象的创建
一般形式:
类名
如:Person *p = [Person new];
四、对象方法和函数的区别
1.对象方法都是以减号开头
2.对象方法都必须声明在@interface和@end之间
对象方法的实现必须声明在@implementation和@end之间
3.对象方法只能由对象来调用
4.对象方法归类\对象所有
函数
1.函数可以卸载文件的任意位置,函数归文件所有,比如函数写在@implementation和@end之间,然后也可以在main函数里调用
2.但是函数不能声明在@interface和@end之间
3.函数调用不以来于对象
4.函数内部不能直接通过成员变量名访问某个成员变量
五、类方法
类方法和对象方法差不多,都需要在@interface里声明,在@implementation里定义
类方法的都是以”+”开头的,而且不用创建对象,直接用类调用
对象方法只能用对象来调用
类方法和对象方法的对比
注意:对象方法中可以调用类方法
在类方法中调用自己,可以引发死循环