iOS概念入门学习-OC-类和对象

本文从OC与C的差异入手,探讨面向对象编程的基本概念,详细阐述类和对象的定义、关系及其创建过程,同时讲解了方法的声明和调用,帮助iOS开发者理解OC中的核心概念。
摘要由CSDN通过智能技术生成

概要:本文介绍了类和对象的基础知识和其简单地应用。

一、OC和C的差异

盼望着,盼望着,面向对象来了,iOS的脚步近了。
那么OC和C到底有什么差别呢?
首先要明确地是,OC是C的扩展,OC支持C的语法,具体差别在哪,下面将一一列出

1.源文件对比

C中常见的源文件有.c 和 .h ;
OC中常见的源文件有.h 和 .m ;

2.基本语法对比

1)数据类型对比

首先OC兼容C中的所有数据类型;
OC新增了boolean类型、block类型、对象类型、特殊类型SEL和nil 等;
另外,C中不兼容OC中新增的类型;

2)流程控制语句对比;

首先OC兼容了C中所有的流程控制语句;
OC又新增了自己的for in 增强型的循环语句;
//OC中的增强型for循环
for(NSString *str in arr){
NSLog(@"%@",str);
}

另外,C中不兼容OC中新增的增强循环语句;

3)函数和方法定义声明的对比;

C语言中函数的声明和实现

i.函数声明:
int sum(int a,int b); 
ii.函数定义
int sum(int a,int b){ 
    return a+b; 
} 

OC语言中函数习惯称之为“方法”

i.方法声明:
-(int)sum:(int) a and:(int) b; 
ii.方法定义
-(int)sum:(int) a and:(int )b{ 
    return a+b;
} 

3.import和include的区别

(1)include 和 import 都是引入头文件
(2)import引入的头文件,可以防止重复包含
(3)include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题

4.NSLog和printf使用的差异

(1)NSLog 会自动换行 而printf不会自动换行
(2)NSLog 会自动输出时间等项目信息,printf不会输出调试信息
(3)NSLog 函数的参数是一个NSString 对象,printf是一个字符串常量指针

二、面向对象

1.面向对象的概念

(1)概念
面向对象(object-oriented ;简称: OO) 至今还没有统一的概念,我这里把它定义为: 按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世 界分析、设计、实现软件的办法。通过面向对象的理念使计算机软件系统能与现实世界中的 系统一一对应。

面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。 
(2)面向对象编程的优点

1)大幅度提高软件项目的成功率
2)减少维护费
3)高可移植性和可靠性

(3)面向对象设计三个主要特征

1)封装性
2)多态性
3)继承性

(4)面向对象和面向过程的区别:

面向过程
1)强调的是功能行为
2)关注的是解决问题需要哪些步骤

面向对象
1)将功能封装进对象,强调具备了功能的对象
2)关注的是解决问题需要哪些对象
3)面向对象是基于面向过程的。

三、类和对象

1.概念

类:类是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。
对象: 即指现实世界中各种各样的实体。它可以指具体的事物也可以指抽象的事物。
属性和事件:在面向对象概念中我们把对象的内部状态称为属性、运动规律成为方法或事件。

2.类和对象之间的关系

类(Class)
一个类由3个部分构成
(1)类的名称:类名
(2)类的属性:一组包含数据的属性
(3)类的方法:允许对属性中包含的数据进行操作的方法

对象(Object)
(1)对象是系统中的基本运行实体
(2)对象就是类类型(class type)的变量
(3)定义了一个类,就可以创建这个类的多个对象
(4)一个类就是具有相同类型的对象的抽象

3.类的声明和实现

(1)相关名词介绍
  • .h文件:类的生命文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。
  • .m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。
    方法:
    方法的声明和实现,都必须以 + 或者 - 开头
  • +表示类方法(静态方法)
  • -表示对象方法(动态方法)
    在.h中声明的所有方法作用域都是public类型,不能更改
  • 作用域的种类:
    成员变量的常用作用域有3种:
    @public 全局都可以访问
    @protected 只能在类内部和子类中访问
    @private 只能在类内部访问
(2)声明一个类

1)声明类使用关键字 @interface
2)声明类,我们通常放到.h的头文件中
这里写图片描述

(3)实现一个类

1)实现一个类 使用关键字:@implementation
2)实现一个类通常放到.m的文件中
3)实现类主要是对方法的具体实现
这里写图片描述

4.对象的创建

这里写图片描述

[Car new]; 在内存中干三件事:
(1)开辟存储空间
(2)初始化成员变量(写在类声明大括号中的属性就叫成员变量,也叫实例变量)
(3)返回指针地址

理解方式一:
定义了一个Car类型的指针变量
指针变量指向新申请的内存空间

理解方式二:
用Car类实例化了一个实例对象,对象的名称是p
Car *p = [Car new];

5.方法的声明和调用

(1)方法的声明

1)无参
这里写图片描述

2)有参
这里写图片描述

(2)方法的调用

1)无参
这里写图片描述
2)有参
这里写图片描述

(3)对象方法和类方法

对象方法
1)对象方法以-开头如 -(void)xx;
2)对象方法只能由对象来调用
3)对象方法中可以访问当前对象的成员变量
4)调用格式 [对象名 对象方法名];

类方法
1)类方法以+开头 如+(void)put;
2)类方法只能由类来调用
3)类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间 来存储类中的成员变量。
4)调用格式:[类名 类方法名];

类方法的好处和适用场合:
1)不依赖于对象,执行效率更高;
2)能用类方法解决的问题,尽量使用类方法;
3)场合:当方法内部不需要使用到成员变量时,可以改为类方法。

总结:经历了C语言的学习之后,终于踏入了OC的门槛,类和对象的思想、面向对象编程是思维方式的转变,编程变得更高效、可维护性更高,OC虽然是C的扩充,但是语法方面还是有很多不同的,不过学习之后,好像一切又是那么的“理所应当”。更深入的学习期待中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值