一、OC简介
1.OC是在C语言的基础上,增加了一层最小的面向对象语法
2.完全兼容C语言
3.可以再OC代码中混入C语言代码,甚至是C++代码
对于2,3 两点如何理解呢?
新建一个.m的文件(注:OC文件的后缀为.m)在这个.m中你可以用你再学习C语言中学过的语法和知识,编译、链接、运行完全没有问题。
// 完全没有问题
#include <stdio.h>
int main()
{
printf("第1个OC程序\n");
return 0;
}
不过如果你在一个.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语言字符串。最后一点就是是用NSLog需要#import <Foundation/Foundation.h>,使用printf需要 #include <stdio.h>。
5.#import的作用
a)跟#include 一样,是用来拷贝某个文件的内荣
b)可以自动防止文件内容被拷贝多次,也就是头文件中不用加入下面的预处理指令了
#ifndef _STDIO_H
#define _STDIO_H
#endif
三、面向对象和面向过程思想
1)区别分析
a)面向过程关注的是解决问题需要哪些步骤,面向对象关注的是解决问题需要哪些对象
比如有这么个例子: 以用电脑听歌为例子
1⃣️面向过程实现的是: 先打开电脑,然后播放电脑中的歌曲,最后关闭电脑
2⃣️面向对象实现的是:对于一个电脑对象,调用它的开机,播放歌曲,关机方法
2)需要设计哪些类,如何设计类
1.类的设计只关心(类名,属性,行为)
2.一般名词都是类
3.拥有相同(或者类似)属性和行为的对象都可以抽象出一个类
3)OC中创建类和对象
// 类的声明
@interface Car : NSObject
{
@public
int wheels; // 多少个轮子
int speed; // 时速
}
// 方法的定义
- (void)run;
@end
// 类的实现
@implementation Car
// 方法的实现
- (void) run
{
NSLog(@"%i个轮子,%i时速的车子跑起来了", wheels, speed);
}
@end
1.类的声明用到了关键字@interface、@end,类的实现用到了关键字@implementation、@end(注:@end不能省)。
2.一般都是通过指针来间接访问一个对象,创建一个对象的方法是[类名 new]
3.@interface的大括号{}中声明类的成员变量(实例变量)默认值为0,跟C语言中的全局变量一样。
4.@public可以让成员变量被外界访问
5.加上:NSObject的目的是让Car类具备创建对象的能力(其实:是继承的意思,NSObject也是一个类,基类)
四、方法
1)不带参数的方法
a.设计一个返回PI的方法
// 方法声明
- (double)pi;
// 方法实现
- (double)pi
{
return 3.14;
}
2)带参数的方法
a.设计一个计算平方的方法
// 方法声明
- (double)square:(double)number;
// 方法实现
- (double)square:(double)number
{
return number * number;
}
b.设计一个计算和的方法
// 方法声明
- (double)sumOfNum1:(double)num1 andNum2:(double)num2;
// 方法实现
- (double)sumOfNum1:(double)num1 andNum2:(double)num2
{
return num1 + num2;
}
3)总结
a.OC中方法不允许同名
b.:也是方法的一部分
c.有多少个参数就有多少个:
d.从第二个参数开始冒号之前要加上对应的参数名作为描述
e.方法中的小括号()是用来将类型括起来的
f.对象方法得用-开头,类方法得用+开头