黑马程序员——OC的初步认识,类和对象

时间:2023-02-20 22:59:53

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、oc简介
oc是在c语言的基础上,增加了面向对象的语法,开发的一种语法。
oc可以完全兼容c语言,可以在oc中混入c语言代码和一部分的c++代码
oc用途:用于Mac os x平台和ios平台的应用程序开发
文件后缀名c->.c     oc->.m     c++->.m
oc程序开发前景:没有安卓手机多而广的用户群,但是苹果手机和电脑的使用者消费能力更强。

二、语法
1.关键字都是以@开头:@interface,@implementation,@end,@public,@protected等等
2.字符串以@开头: @"Hello"
3.其它语法
基本数据类型:char,int,float,double,BOOL...
null:相当于c语言中的null
基本语句: 循环语句,条件语句等等
三、
1.oc程序的开发过程
.m源文件(编译)->.o目标文件(链接)->a.out
什么是链接?链接就是把所有相关的点.o文件和c语言函数库连接在一起,生成一个可执行文件
2.第一个oc程序
黑马程序员——OC的初步认识,类和对象

1).#import的用途:

 #include一样,拷贝文件的内容

可以自动防止文件的内容被重复拷贝

2)主头文件

 主头文件:最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件

 Foundation框架的主头文件名称就是Foundation.h

只需要包含Foundation框架主头文件,就可以使用整个框架的东西

3) 运行过程

 1> 编写OC源文件:.m.c

 2> 编译:cc -c xxx.m xxx.c

 3> 链接:cc xxx.o xxx.o -framework Foundation

 (只有用到了Foundation框架才需要加上-framework Foundation)

框架是ios开发的核心,学oc暂时只学Foundation
#import <Foundation/Foundation.h>包含所有frame Foundation的主头文件
4)NSLog与printf的区别

NSLog接收OC字符串作为参数,printf接收C语言字符串作为参数

NSLog输出后会自动换行,printf输出后不会自动换行

使用NSLog需要#import <Foundation/Foundation.h>

使用printf需要#include<stdio.h>


BOOL变量(就两个值0和1)

BOOL类型的本质

typedef signedchar BOOL;

BOOL类型的变量有2种取值:YES、NO

#define YES (BOOL)1

#define NO  (BOOL)0

BOOL的输出(当做整数来用)

NSLog(@"%d%d",YES, NO);


框架的作用

苹果官方为了提高开发者们的开发效率,提供了很多框架给开发者用,框架中包含了很多常用的API(应用编程接口),Foundation框架就是我们开发OC、iOS、Mac程序必备的框架,当然,我们也可以自己DIY属于我们自己的框架。

每个框架中都有很多头文件,想要使用某个框架的全部功能,只需要包含它的主头文件就可以了,主头文件的名称与框架名相同。

例如Foundation框架的主头文件为:Foundation.h  ,所以我们包含框架头文件的格式为:

黑马程序员——OC的初步认识,类和对象

类和对象

前面已经简单介绍了面向对象的思想,在面向对象的编程思想中,有两个名词我们会经常用到:对象

我们可以把【类】和【对象】的关系就像是【图纸】和【实物】的关系。在学习OC的过程中,我们要习惯把所有可能的主体具化成对象。

1.类的创建

1)举个例子:如果“飞机图纸”是一个类,那么我们就可以根据这张图纸创建出很多个飞机实体,这些飞机实体就是“飞机图纸”这个类生成的对象。

在创建类时,有两个要素:【属性】和【行为】(程序员们习惯把”行为”成为”方法”,后文我们都称之为”方法")

在图纸中,我们需要描述清楚飞机有几对机翼、飞机的长度、翼展、重量、颜色、速度、等等,这些就是飞机这个类的属性

而飞机具有起飞、航行、降落、坠毁(虽然坠毁是被动的,但我们仍然认为坠毁这个行为的主体是飞机)等行为,这些行为(方法)我们也需要在飞机这个类中写明。


2)类的创建方法

类的创建分为声明和实现两部分,一般类的声明写在.h文件中,类的实现写在.m文件中。

类的属性不需要写实现,所以类的实现其实就是写方法的实现。方法的声明和实现方法有点象函数的声明和实现。

类名的声明写在@interface 和 @end 之间

类的声明:

黑马程序员——OC的初步认识,类和对象

类的实现

类名的实现写在@implementation 和 @end 之间

黑马程序员——OC的初步认识,类和对象

3)类的命名规范:(看完这一节之后,我们可以在回头感受一下上面的代码)

1> 类名的命名规范

* 类名的第一个字母必须是大写

* 不能有下划线

* 多个英文单词,用驼峰标识

2> 属性的命名规范

* 必须以下划线开头(行业规范,后面我们就会知道为什么这样命名)

* 多个英文单词,驼峰标识

3> 方法的命名规范

* 方法名以加号’+’或减号'-‘开头,对象方法以减号开头,类方法以加号开头。

*方法名前写返回值类型,如果需要传入参数,方法名以冒号结束,并在冒号后面描述参数类型和形参名称

*数据类型必须用括号括起来 例如:(void)  、(int) 、(NSString *)

2.对象的创建

上面我们已经了解了类的创建原则和方法,下面介绍一下如何通过类来创建一个对象。

OC中,我们可以根据一个类创建出无数个对象。其实,类也是一个对象。只要是对象,我们就可以调用对象所具有的方法。

调用对象方法的语法是: [ 对象名  方法名 ];

所有类都默认有一个名叫 new 的方法,我们通过这个方法可以创建出类。

黑马程序员——OC的初步认识,类和对象

总结:

1.OC是弱语法,即便编译器不报错,我们也要自觉养成良好的代码习惯。

2.把面向对象思想结合到生活中,有助于理解。

3.类的声明包括属性的声明和方法的声明,类的实现其实就是方法的实现。

4.OC中,指针的作用就是储存一个对象的地址。

5.对象属性默认是被保护的,想要直接访问就必须在属性前加上 @puclic