一、OC简介
1.OC是在C语言的基础上,增加了一层最小的面向对象语法
2.完全兼容C语言
3.可以再OC代码中混入C语言代码,甚至是C++代码
对于2,3 两点如何理解呢?
新建一个.m的文件(注:OC文件的后缀为.m)在这个.m中你可以用你再学习C语言中学过的语法和知识,编译、链接、运行完全没有问题。
不过如果你在一个.c的文件中,写上一大推OC中用到得知识,就会报错,这一点需要注意。所以第2点可以这么理解,OC是完全兼容C语言的,但是C语言不兼容OC。
二、OC语法预览
1.关键字
OC中关键字基本都是以@开头的比方说:@interface,@end,@implementation,@public 等等
2.字符串以@开头
比如@”Hello”是OC字符串,而”Hello”是C语言中的字符串
3.数据类型
就基本类型而言,OC比C多了一个BOOL类型,复杂数据类型,如结构体、枚举,C语言中有的OC中也有。
4.NSLog与printf的区别
NSLog是OC中的输出函数,printf是C语言中的输出函数。首先就他们的大小写就有区别,NSLog前3个字母大写,printf都是小写。第二点就是NSLog自动换行,而printf换行得使用’\n’。第三点就是NSLog的参数是OC字符串得加上@,printf中的字符串是C语言字符串
5.#import的作用
a)跟#include 一样,是用来拷贝某个文件的内荣
b)可以自动防止文件内容被拷贝多次,也就是头文件中不用加入下面的预处理指令了
三、面向对象和面向过程思想
1)区别分析
a)面向过程关注的是解决问题需要哪些步骤,面向对象关注的是解决问题需要哪些对象
比如有这么个例子: 以用电脑听歌为例子
1⃣️面向过程实现的是: 先打开电脑,然后播放电脑中的歌曲,最后关闭电脑
2⃣️面向对象实现的是:对于一个电脑对象,调用它的开机,播放歌曲,关机方法
2)需要设计哪些类,如何设计类
1.类的设计只关心(类名,属性,行为)
2.一般名词都是类
3.拥有相同(或者类似)属性和行为的对象都可以抽象出一个类
3)OC中创建类和对象
1.类的声明用到了关键字@interface、@end,类的实现用到了关键字@implementation、@end(注:@end不能省)。
2.一般都是通过指针来间接访问一个对象,创建一个对象的方法是[类名 new]
3.@interface的大括号{}中声明类的成员变量(实例变量)默认值为0,跟C语言中的全局变量一样。
4.@public可以让成员变量被外界访问
5.加上:NSObject的目的是让Car类具备创建对象的能力(其实:是继承的意思,NSObject也是一个类,基类)
四、方法
1)不带参数的方法
a.设计一个返回PI的方法
2)带参数的方法
a.设计一个计算平方的方法
b.设计一个计算和的方法
3)总结
a.OC中方法不允许同名
b.:冒号也是方法的一部分
c.有多少个参数就有多少个冒号:
d.从第二个参数开始冒号之前要加上对应的参数名作为描述
e.方法中的小括号()是用来将类型括起来的
f.对象方法得用-开头,类方法得用+开头
ps:注意
类的方法和对象方法的区别
类中可以定义两种方法
在@interface 类名 :NSObject
{
}
这里可以声明类方法和对象方法
@end
(1)对象方法
对象方法声明用 - 开头
对象方法中可以直接访问属性(成员变量)
对象方法必须用对象调用 [对象 对象方法名称]
对象方法可以直接调用其他对象方法;
对象方法也可以直接调用其他类方法
(2)类方法
类方法的声明用 + 开头
类方法不可以直接访问对象的属性
类方法必须用类来调用 [类 类方法名称] 例:[Preson new] new为类方法 +开头的声明
类方法中不可以直接调用对象方法;
类方法可以直接调用类方法