类和对象
面向对象
面向对象的思想就是关注解决的问题需要哪些对象,然后直接用对象的方法解决问题,C语言是面向过程的语言,面向过程关注的时解决问题需要哪些步骤
生活中面向对象的例子
- ¬ 想打电话发短信 找手机,不用分析电话要怎样才能拨通
- ¬ 去饭店吃饭 找服务员,不用分析怎么到厨房炒菜
- ¬ 汽车坏了 找汽车维修工,不用分析修车的步骤
- ¬ 境界:万物皆对象
常用术语
- ¬ 面向过程 Procedure Oriented
- ¬ 面向对象 Object Oriented,简称OO
- ¬ 面向对象编程 Object Oriented Programming,简称OOP
类的声明
@interface Car :NSObject
- 类名属性的命名规则:标示符的规则
- 类名的命名规范:有意义、驼峰标识、首字母大写
- 冒号表示继承,Car继承NSObject这个类,用到NSObject的时候文件的开头要#import<Foundation/Foudation,h>,因为Foundation 这个框架包含了一些常用的基本的类。
成员变量
每个类都可以创建出很多对象,每个对象都有相同的属性,但是属性值会有不同,属性就是对象的成员变量
成员变量要在@interface的大括号{}中声明,默认会初始化为0,在声明的时候不能对成员变量进行初始化
成员变量的作用域
public:表示这个变量是公共的,可以被外界访问
privite:私有的,声明的变量不能被外界访问,只能在类中使用
protect:被保护的,这样的变量可以在父类和子类中访问(默认都是protect类型的变量)
package:只要处在同一个框架中,就可以被访问,不同的框架不能访问
类的实现
@implementation Car
- (void)run
{、
NSLog(@“—————这个车子跑起来了”);
}
@end
类的实现必须要写在@implemen和@end之间
函数和方法的区别
方法
1.对象方法都是以减号 -
2.对象方法的声明必须写在@interface和@end之间
对象方法的实现必须写在@implementation和@end之间
3.对象方法只能由对象来调用
4.对象方法归类对象所有
函数
1.函数能写在文件中的任意位置(@interface和@end之间除外),函数归文件所有
2.函数调用不依赖于对象
3.函数内部不能直接通过成员变量名访问某个对象的成员变量
匿名对象
[Car new]->speed = 300;
[[Car new] run];
像上面这样没有变量来接受创建出来的对象直接拿来使用,叫做匿名对象
创建对象的时候尽量不用匿名对象,因为这样会造成内存泄露