Objective-C面向对象

转载、引用请注明来源!

Objective-C的类

一、语法简介

1、类

1)、.h文件:类的声明文件,用于声明实例变量和方法。类的声明使用关键字@interface和@end。【.h中的方法只是声明,不实现,也就是只说明了方法名、返回类型、接收的参数及类型,并不会编写方法的内部代码】!

2)、.m文件:类的实现文件,用于实现.h中声明的方法。类的实现文件使用关键字@implementation和@end。

2、实例变量

实例变量的声明和C语言定义变量的方法是一样的,使用“变量类型 变量名”格式的语法。【id 类型变量表示任意对象类型】

3、实例变量的作用域:

1)、@public (公开的)在有对象的前提下,任何地方都可以直接访问。

2)、@protected (受保护的,默认就是@protected)只能在当前类和子类的对象方法中访问。

3)、@private (私有的)只能在 当前类的对象和对象方法中才能直接访问。

4、方法

1)、方法的声明和实现,都必须以 + 会 - 号开头

+ 表示类方法

-  表示对象方法

2)、在 .h 中声明的所有方法作用域都是 public 。

二、创建 OC 类

1、右击项目文件,选择 New File

2、选择Cocoa的 Cocoa Class

3、输入类名(首字母通常大写)和选择父类、语言

这样就创建了一个类名为People的类,父类是NSObject。

4、创建完成后,项目多了 2 个文件

* People.h 是类的声明文件, People.m 是类的实现文件。

* 默认情况下, 这两个文件名与类名一致

* 编译器只会编译 .m 文件,不会编译 .h  文件。

三、类代码解析

1、People.h — 类的声明文件

#import

@interface People : NSObject

@end

1)、 OC 中使用 @interface 来声明一个类,@interface 后面紧跟类名 People 。

2)、 类名 People 后面的冒号 : 表示继承,People : NSObject 表示 People 类继承自 NSObject 。

3)、@end 表示类声明的结束。

4)、 #import  , 是因为 NSObject  被声明在 Foundation.h 中。

2、People.m — 类的实现文件

#import "People.h"

@implementation People

@end

1)、因为 People 这个类声明在 People.h 文件中 ,所以要 #import "People.h" 。

2)、OC中使用关键字 @implementation 来实现一个类,@implementation 后的 People 表示要实现的类。

3)、 @end表示类的实现结束 。

四、添加成员变量

通常情况下,我们把实例变量定义在类的头文件中,即类的声明文件中。

1、给 People 添加实例变量

#import

@interface People : NSObject

{

int _age;       //年龄

float _weight;  //体重

}

@end

1)、添加了一个 int 类型的成员变量 _age 和 float 类型的成员变量 _weight,默认情况下成员变量的作用域是@protected [受保护的],即可以在 People 类内部和子类访问。

2)、实例变量必须写在花括号 {  } 中。

五、添加方法

前面定义了两个实例变量 _age 和 _weight ,它们的作用域是 @protected ,外界不能直接访问它们。为保证数据的封装性,我们可以提供 _age 和 _weight 的 get 和 set 方法,让外界间接访问 _age 和 _weight 。下面以 _age 的 get  和 set 方法为例。

1、在 People.h 中声明方法

#import

@interface People : NSObject

{

int _age;       //年龄

float _weight;  //体重

}

- (void)setAge:(int) age;       //age 的 set 方法声明

- (int)age;                //age 的 set 方法声明

@end

1)、- (void)setAge:(int) age;  是 set 方法的声明,- 表示类方法,(void)表示返回类型,setAge:是方法名,【注意冒号也是方法名的一部分,一个冒号对应一个参数】,(int) 是参数类型,age 是参数名。

2)、- (int)age;    是 get 方法的声明,该方法没有参数。

2、在 People.m 中实现方法

#import "People.h"

@implementation People

//set方法的实现

- (void)setAge:(int) age{

_age = age;

}

//get方法的实现

- (int)age{

return _age;

}

@end

1)、set 方法将参数 age 赋值给实例变量 _age。

2)、 get 方法 返回实例变量age。

六、创建对象

在使用一个对象之前,首先要调用类的构造函数生成对象。OC通过向类发送消息来创建一个对象,发送alloc消息即可创建对象:     语法:[类名   alloc];

alloc 执行后即可完成对象所需的内存分配,但还没进行初始化。初始化对象的方法叫初始化方法。

语法:[[类名  alloc] init];      *OC中的方法可以嵌条使用。

这样就可以生成一个对象了。(也可以使用 new 直接生成一个对象)

*创建一个 People 对象

#import

#import "People.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

People *p1 = [[People alloc] init];

}

return 0;

}

1)、因为要使用People 类,所以要包含 #import "People.h" 。

2)、OC中的方法调用使用 [  ] ,括号左侧是调用者(类 或 对象),右侧是方法。

3)、分配内存。+(id)alloc; 方法是类方法,其返回值是 id 类型。

4)、初始化。init方法是对象方法。

*销毁对象:在还没有ARC(自动释放)机制的年代,每创建一个对象,就要手动释放一次

即:[p1  release];

时间: 2024-08-26 11:50:05

Objective-C面向对象的相关文章

iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法

本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列.然后在開始Objective C语言的学习,假设您遇到问题也能够与我探讨,另外将无偿分享自己整理的大概400G iOS学习视频及学习资料.都是干货哦.能够新浪微博私信?关注极客James.期待与您的共同学习和探讨.! 由于时间有限,每天在工作之余整理的学习分享.难免有不足之

Oc(类和对象)(ClassAndObjict)

main函数 // //  main.m //  2-2 LessonClassAndObject // //  Created by lanouhn on 15/2/2. //  Copyright (c) 2015年 lanouhn. All rights reserved. // //import引用系统的头文件用 <>, 引用自定义类的头文件用 "" #import <Foundation/Foundation.h> #import "Car.

黑马程序员 00-OC基本语法概述

1.OC简介 Objectuve-C 简称OC,其中Objective是面向对象的意思,即面向对象C. C语言的基础上,增加了一层最小的面向对象的方法(保留了面向对象语法的精华部分) 完全兼容C语言 以下代码写在OC源文件(.m文件)中,说明OC程序完全兼容C语言 #include <stdio.h> // OC程序的入口:main函数 // OC程序完全兼容C语言 int main(intargc, const char* argv[]) { printf("第1个OC程序\n&q

objective - c 类和对象

知识点 1.初步认识 OC 2.xcode使用 3.面向对象编程思想,类和对象 4.类的定义和使用 5.类的实例化--对象 6.声明和实现相分离 =========================================== 1.需要理解的(理论部分) 第一部分:OC和面向对象 1.1.OC语言的历史,特点.重要程度 [什么是OC] objective - c   在C语言基础上开发, 面向对象的语言: 注意C语言和oc语言语法的区别: IOS, iphone, ipad … [进入OC

Objective C笔记(第一天)

• OC语言概述 1.早在20世纪80年代早期,Bard Cox发明了Objective C, 是扩充的C,面向对象的编程语言. 2.NEXTSTEP简称NS a.1985年,Steve Jobs成?立了NeXT公司. b.1988年,NeXT SoftWare公司获得了OC的语言授权, NEXTSTEP环境成为了苹果操作系统,创建的开发包.MACOS c.1996年,12月20?日,苹果公司宣布收购了NeXT software公司,NEXTSTEP环境为apple公司下主要开发.发?行操作系统

《objective-c基础教程》学习笔记(四)—— OC面向对象编程初探

在上篇博文中,我们编写了一个可以输出不同几何类型的小程序.通过C语言的struct结构体,给大家感受了下,对象的大概样子. 如果用Obejctive-C的面向对象的特征来实现.那么,drawShape函数应该修改成这样: 1 void drawShape(id shapes[], int count) 2 { 3 for(int i=0;i<count; i++) 4 { 5 id shape = shapes[i]; 6 [shape draw]; 7 } 8 } 这里,函数上传入的id类型,

iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象

1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较.这一篇文章,我准备为大家介绍一下奇葩的Objective-C语言的语法和使用.这篇文章主要讲Objective-C的理论概念. 2.学习目标 2.1 Objective-C语言面向对象的特性与其他语言(C++)类比学习,声明定义一个MyObject类,并创建这个类的实例. 2.2 Objectiv

iOS开发核心语言Objective C —— 全部知识点总结

本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础.建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在開始Objective C语言的学习,假设您遇到问题也能够与我探讨.另外将无偿分享自己整理出来的大概400G iOS学习视频及学习资料,都是干货哦.能够新浪微博私信?关注极客James,期待与您的共同学习和探讨! ! 由于时间有限,每

efffective Objective-C 学习笔记

第一条:了解objective-c语言的起源 消息结构而非函数调用.区别在于:使用消息结构的语言,其运行时所应执行的代码由运行环境来决定:而使用函数调用的语言,则由编译器决定. Objective-c为C语言添加了面向对象特性,是其超集.Objective-C使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型.接受一条消息之后,究竟应执行何种代码,由运行期环境而非编译器来决定.掌握C的内存模型和指针. 第二条:在类的头文件尽量少引入其他头文件 除非确有必要,否则不要引入头文件.一般来说,

Objective-C 源码(零):前戏

趁着最近比较闲,可以再次研究一下Objective-C的源代码,顺便梳理一下思路,愿有更大收获. Objective-C是一门面向对象的程序设计语言.它的对象模型是基于类来创立的.源码可以在苹果开源的runtime中下载,连接是http://opensource.apple.com/tarballs/objc4/ ,自己下载了个objc4-647.tar.gz 版本. 看源码能学到很多东西,特别是runtime原理,如果想学好,但是又懒的自己看源码,只是局限于看大神的博客里面的一些他们看完源码之