Oc—面向对象
面向对象和面向过程的区别
面向过程关心的是解决问题需要哪些步骤。
面向对象关注的是解决问题需要哪些对象。
oc中的面相对象
世界万物皆对象。
面向对象更加复合人民的思考习惯,将复杂的事情简单化处理,使人民从执行者变成了指挥者
oc中的类相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类
oc利用类来创建对象,对象是类的具体存在
因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象。
什么是类?
相当于现实当中的图纸,是具体事物的抽象,描述属性和行为。对无数个对象相同 属性的概括描述。一般名词都是类。
要描述OC中的类稍微麻烦一点,分2大步骤:类的声明、类的实现(定义),跟函数类似,函数有分声明和定义。
类的声明和实现
一、类的声明
以@interface开头,以@end结尾
类名的规范写法
1. 名字:首字母大写,后面的单词遵循驼峰原则
2. 属性:一般以下划线开头,后面遵循驼峰原则
属性声明在大括号中
属性也叫做成员变量或者实例变量(每个实例都有自己的属性值)。
对象创建时, @interface的大括号和函数的大括号是不一样的,所有的成员变量默认初始化为0. 只能声明成员变量, 不能在大括号里给它们赋初值。 只写类型和变量名。
NSObject可以让声明的类具备创建对象的能力。
@public可以让外部的指针直接访问对象的成员变量。
3. 行为(方法):遵循驼峰原则。其中方法分对象方法和类方法
方法声明写在大括号外面。
要遵循下面的要求:
1> 如果是对象调用的方法, 用减号标记"-". 如果是类调用的方法, 用加号标记"+"。
2> 数据类型用()括起来。
3> 接收的参数不能用()括, 因为在OC中小括号就是用来括数据类型的。 参数要用冒号标记, 有几个参数就写几个冒号, 没有参数就不写。
函数中的写法 void test(){ } oc中方法的对象方法写法是 - (void )test;
二、 类的实现:
1、 类的实现要以@implementation开头, 以@end结尾。
2、 类的实现就是用来实现类的方法。
3、 方法的实现, 先把方法声明抄过来, 再加个大括号, 在里面写实现代码。
4、 方法内部如果要访问当前对象的成员变量, 直接写变量名字就可以。
在main函数中创建对象
在oc中要想让类去执行一些行为(功能),必须[类名/对象 方法名称] [方法调用者 方法名称]
//通过类名调用的方法,叫类方法
//通过对象调用的方法,叫对象方法
oc中只能用指针变量来间接操作对象
[Car new]每次都会创建一个新对象 并且会返回新对象本身(新对象的地址)
Car *p=[car new]
代码编写:
#import <Foundation/Foundation.h>
1 类的声明
@interface Car : NSObject
{
@public
int wheels; // 多少个轮子
int speed; // 时速
}
- (void)run; // 跑的行为
@end
2 类的实现
@implementation Car
- (void) run
{
NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed);
}
@end
3 创建对象
// 主函数
int main()
{
// 创建车子对象
Car *p = [Car new];
p->wheels = 4;
p->speed = 300;
NSLog(@"车有%d个轮子,时速在%dkm/h",c->wheels, c->speed);
return 0;
} |
|