Objective-C学习笔记_类和对象

  • 一 Objective-C概述
  • 二 面向对象编程OOP Object Oriented Programming
  • 三 类和对象
    • OC中类的定义

      • 接口部分
      • 实现部分
      • 类和文件
      • 创建对象
      • 使对象
  • 四 实例变量操作

一 Objective-C概述

Cocoa和Objective-C是苹果公司Mac OS X操作系统的核心。1980年初,Brad Cox发明了Objective-C,意将流行的、可移植的C语言和Smalltalk语言结合在一起;1985年,Steve Jobs成立NeXT公司,NeXT选择Unix作为其操作系统,创建了NeXTSTEP(使用Objectiv-C开发的一款强大的用户界面工具包);1988年,NeXT公司开始使用Objective-C开发;1996年苹果公司收购了NeXT之后,NeXTSTEP被重命名为Cocoa,并得到了Macintosh编程人员的广泛认可,即1996年Objective-C成为了苹果主要编程语言。

Objective-C简称OC,扩充自C语?的面向对象编程语言。是OS X和iOS操作系统的主要编程语?。


二 面向对象编程OOP (Object Oriented Programming)

面向过程 面向对象
特点 分析解决问题的步骤,实现函数,依次调用函数 分析某问题需要参与的对象,根据功能定义类,使?用对象的功能完成程序
侧重点 实现功能 对象的设计
语言举例 C语言 Objective-C, C++, Java等

因此,面向对象编程具有良好的可扩展性、可重用性。这一点在日后开发过程中可见一斑。


三 类和对象

类和对象是面向对象的核心。步骤:定义类,创建对象,使用对象。

类:具有相同特征和行为的事物的抽象。

对象是类的实例。

类是对象的类型。

OC中类的定义

定义类包含两部分:接口部分(.h文件)和实现部分(.m文件)。

  1. 接?部分(.h文件):声明类的特征和行为。
  2. 实现部分(.m文件):内部的具体实现。

接口部分

接?部分标志:@interface … @end

作用:声明类的实例变量和方法,即特征和行为。

包含内容:类名、父类名、实例变量、方法等。

#import <Foundation/Foundation.h>

/* 类的声明:
 * 声明: 实例变量 和 方法
 */
@interface Person : NSObject /* Person 类名
                              * NSObject 父类名
                              */
/* 声明实例变量, 在{}中 */
{
    @public /* 实例变量可见度修饰符 */
    /* 姓名 */
//    char name[20];
    NSString *_name; /* OC中字符串使用NSString
                      * * 说明是指针
                      * 实例变量必须使用_开头
                      */
    NSString *_sex;

    /* 年龄 */
//    int _age;
    NSInteger _age; /* NSInteger 相当于C中的int类型 */
}

/* 声明方法 */
/* 声明说话打招呼的方法 */
- (void)sayHi; /* 方法的声明类似于函数的声明
                * - 号不能省略, 叫做-号方法.
                */

- (void)info;
@end

实现部分

实现部分标志:@implementation … @end

作?:实现?法,即实现类的?为。

#import "Person.h"

@implementation Person
/* 方法的实现
 * 方法声明之后必须实现, 否则编译时出现警告
 */

- (void)sayHi
{
    printf("Hello!\n"); // C语言的输出
    NSLog(@"Hello!"); /* @相当于OC的一个标志
                       * 后面不用加‘\n‘, 自动换行
                       */
}

- (void)info
{
    NSLog(@"姓名: %@, 性别: %@, 年龄: %ld", _name, _sex, _age); // %@ 相当于指代对象
}
@end

类和文件

类:@interface … @end @implementation … @end

?件:.h称为接口文件或头文件,.m称为实现文件。默认设置如下:

  1. 使用类名命名文件。
  2. .h文件管理类的接口部分;.m文件管理类的实现部分

文件和类本质没有关系。

创建对象

类是模板,对象是具体表现,任何对象都要占用内存空间。

创建对象分两步:分配内存空间和初始化。

分配内存空间:根据类中声明的实例变量为对象分配内存,将所有实例变量置为默认值0,并返回首地址。

初始化:为对象的实例变量设置初始值。

分配内存空间:Person * p = [Person alloc];

初始化:p = [p init];

通常这两部操作需要连写:Person * p = [[Person alloc] init];

+ (id)alloc; +表示这个方法属于类,只能类执行。id返回值类型,表示任意类型的对象,即创建好的对象。

- (id)init; -表示这个方法属于对象,只能对象执行。id返回值类型,表示初始化完成的对象。

使?对象

指针存储对象的首地址,代指对象。OC中使用指针代指对象,进行操作。

Person *p = [Person alloc];先执行“=”右侧

  1. [Person alloc]返回值是对象的?地址,即对象。
  2. p是跟对象同类型的指针变量,存储对象首地址,代指对象。
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
/* 1.定义类
 * 2.创建对象
 * 3.使用对象
 */

/* 定义类, 创建一个类名的.h 和 .m文件
 * .h 声明: 实例变量 和 方法
 * .m 实现部分: 实现方法
 */

/* 创建对象
 * 1. 导入.h 头文件
 * 2. 开辟内存空间
 * 3. 初始化
 */
        /* Person : 类名
         * personOne : 对象名
         * alloc : 方法名, 作用开辟空间. + 方法, 只有类能使用, 返回值类型id, 对象类型.
         */
        Person *personOne = [Person alloc];
        personOne = [personOne init]; /* 初始化, init - 方法, 对象使用的方法, 返回值类型id, 对象类型 */

        /* 分配内存空间并初始化 */
        Person *personTwo = [[Person alloc] init];

        /* 使用对象(方法) */
        NSLog(@"%d, %s", __LINE__, __func__); // 行数 调用模块
        [personOne sayHi];
        [personOne info];
 }
    return 0;
}


四 实例变量操作

实例变量在初始化只做少量设置,后期还需要进?设置。

实例变量区分可见度,共三种public、protected、private,默认可见度为protected。

@public:实例变量访问修饰符号(公有);public修饰的实例变量,可以直接使用“—>”访问


#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        /* 赋值操作 */
        Person *personOne = [[Person alloc] init];
        [personOne info];

        /* 姓名赋值 */
        personOne->_name = @"Zhang San";
        personOne->_sex = @"man";
        personOne->_age = 20;

        /* 取值操作 */

        /* 输出姓名 */
        NSLog(@"姓名: %@", personOne->_name);
        NSLog(@"性别: %@", personOne->_sex);
        NSLog(@"年龄: %ld", personOne->_age);

        [personOne info];
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-11 13:39:41

Objective-C学习笔记_类和对象的相关文章

黑马程序员_IOS开发_Objective-C学习笔记_类(对象)

1.面向对象编程基本介绍: 面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法.对象指的是类的集合,类是对象的模板,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的安全性.重用性.灵活性和扩展性. 2.面向对象与面向过程 面向过程就是分析出解决问题所需要的步骤,然后基于这些步骤用代码和函数把这些步骤一步一步实现. 面向对象是把构成问题事务分解成各个对象,然后各个对象分别对相关的程序功能做出处

学习笔记——Java类和对象

今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数等外,需要掌握三种权限修饰符的区别,并会合理使用(private限制了权限只在本类,protected限定了权限只在包内). 1.2 静态常量.变量.方法:static修饰.我们可以使用“类名.静态类成员”来调用,如: public class StaticTest{ static double P

Java学习笔记1——类和对象

面向对象 对象:万物皆对象 面向对象 类:模子,属性+方法,类是对象的类型,是具有相同属性和方法的一组对象的集合 对象属性:对象拥有的各种特征,"对象有什么" 对象方法:对象执行的操作,"对象能干什么" 类与对象的关系/区别:类是抽象的,仅仅是模版:对象是看得到,摸得着的具体实体.例如:'手机'类,对象为iPhone6,Lumia920 Java中的类 定义类:Java程序都以类class为组织单元 创建一个对象 //1.定义一个类 public class Tel

Java学习笔记-3.类与对象

一.面向对象程序设计 1.概念:   OOA:面向对象的分析,将现实世界进行抽象的分析 OOD:面向对象的设计 OOP:面向对象的程序 2.面向对象的特点: (1)封装性:一是把对象的全部状态和行为结合在一起,形成一个不可分割的整体,对象的私有属性只能由对象的行为来修改和读取 二是尽可能隐藏对象的内部细节,与外界的联系只能够通过外部接口来实现 (2)继承性:特殊类的对象拥有其一般类的属性和行为 (3)多态性:指同一个实体同时具有多种形式,体现在不同的对象可以根据相同的消息产生各自不同的动作 二.

Objective-C学习笔记______类和对象的使用

// // main.m // 类和对象 // // Created by apple on 15/5/30. // Copyright (c) 2015年 apple. All rights reserved. // #import <Foundation/Foundation.h> @interface Computer : NSObject //定义电脑这么一个类 { @public NSString *namec; //定义一个NSString类型名为namec的指针,用于指向一个字符

Objective-C 笔记二 类、对象和方法

对象就是一个物件.面向对象的程序设计可以看成一个物件和你想对它做的事情.这与C语言不同,C语言通常称为过程性语言.在C语言中,通常是先考虑要做什么,然后才关注对象,这几乎总是与面相对象的思考过程相反. 在面向对象的用语中,(这里我们以汽车作为对象)你的汽车是汽车的一个实例.car就是类的名称,这个实例就是从该类创建的.因此,每制造一辆新汽车,就会创建汽车类的一个新实例,而且汽车的每个实例都称为一个对象. 对象 使用对象执行的操作 你的汽车 驾驶 加油 洗车 维修 每个实例或对象不仅包含从制造商那

WEB_JS学习笔记_内置对象

1.数据封装对象 Object.Array.Boolean.Number.String Object Object是javascript中所有对象的父级对象,这意味着所有对象都继承于Object对象. 创建一个空对象: var object = {}; var obj = new Object(); 属性: toString(); Array的定义方式: /* 数组对象:Array 创建方式 new Array(); new Array(size); new Array(element0, el

Objective-C学习笔记_类的扩展

一Category的定义和使用 二Extension的定义和使用 三Protocol的定义和使用 delegate的使用 一.Category的定义和使用 Category,分类或类目.主要作用是为没有源代码的类添加方法.通过Category添加的方法会成为原类的一部分.从而达到扩展一个类的功能. 定义Category过程 新建?件 选择Objective-C Category模板 填写类名和分类名 .h?件添加?法声明 .m添加?法实现 Category的声明 NSString+SayHi.h

Java面向对象学习笔记 -- 1(类、对象、构造器)

1. 类 1)是同类型东西的概念,是对现实生活中事物的描述,映射到Java中描述就是class定义的类. 2)其实定义类,就是在描述事物,就是在定义属性(变量)和方法(函数). 3)类中可以声明:属性,方法,构造器: 属性就是实例变量,用于声明对象的结构的,在创建对象时候分配内存,每个对象有一份! 实例变量(对象属性)在堆中分配,并作用于整个类中,实例变量有默认值,不初始化也能参与运算. 4)类与类之间的关系: ① 关联:一个类作为另一个类的成员变量 public class A { pulic