黑马程序员——Objective-C语言知识整理——类与对象基本知识

本文详细介绍了Objective-C中的类与对象概念,包括类的抽象、声明与实现,对象的实例化及方法调用。通过实例解析了类的声明语法,如属性定义和方法声明,并探讨了对象的创建过程,包括new和alloc/init方法。同时,讲解了对象方法的无参和含参调用。最后,简要说明了多文件开发中的头文件和源文件编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- android培训java培训、期待与您交流! ----------

1、类与对象概述

       类是具有相同特征和行为事物的抽象,类可以表征事物的基本属性以及作用其上的操作。如苹果类,其基本属性有颜色、品种、重量等等,对于苹果类的操作也可以多样,对于苹果可以吃、可以榨汁等等。

       对象是类的对某一抽象类的具体化,对应现实生活中的某一特定实体。如果把人类作为一个类,爱因斯坦就是一个对象。

2、类的抽象

将具有相同属性和行为的事物对象进行抽象概括,称为类的抽象。

类的抽象举例:

坦克发射了3枚导弹轰炸了2架飞机

       类的抽象过程分析:该语句涉及了三个类,分别为坦克、导弹、飞机。每个类又有自己的属性,在这里只关心语句设计到的属性和行为,如坦克类的属性为装载的导弹数,行为是发射导弹;导弹的行为是飞行、爆炸;飞机的行为是飞行、是否被击毁。

3、类的声明与实现

3.1 类的声明

类的声明包括类属性的定义与类方法的声明,类的声明内容置于关键字@interface与@end中。

(1) 类属性的定义

类属性的定义内容为类成员变量的定义部分,置于"{}"之间,且类方法与对象方法不能在此部分出现。

(2) 类的方法声明

类的方法声明有类方法声明与对象方法声明,均需要置于"{}"之外。其中类方法类型标识符为'-',对象方法的为'+'。

举例说明枪类的声明:

@interface gun:NSObject

{
   int _bullet;//枪内子弹数量
}

+ (void)shoot;//对象方法射击

- (void)Alert;//类方法提示这是一把枪,请注意安全使用

@end

3.2 类的实现

类的实现部分代码需要置于@implementation与@end之间,该部分代码为类的方法代码实现。

举例说明枪类的实现:

@implementation gun

+ (void)shoot
{
   NSLog(@"tu tu tu....剩余子弹%d",_bullet);
}

- (void)Alert

{
   NSLog(@"这是一把枪,请注意安全使用");
}

@end

3.3 #pragma mark指令的使用

       #pragma指令为编译器的一种预取指令,#pragma mark指令的使用可以将代码分组,在Xcode中便于代码的查找,可以导航到代码的位置,进而便于程序员的代码管理与阅读。

#pragma mark指令使用实例:

#pragma mark -
#pragma mark 枪类

@interface gun:NSObject

{
   int _bullet;//枪内子弹数量
}

+ (void)shoot;//对象方法射击

- (void)Alert;//类方法提示这是一把枪,请注意安全使用

@end
指令使用注意:

       “#pragma mark -”与“#pragma mark - ”使用结果不同,前者可以在代码索引时会在代码间添加横向输出,而后者将会出现两条线。#pragma mark指令测试:


4、对象的实例化与对象方法的调用

4.1对象的实例化

对象的实例化过程也可以称为对象的创建过程,分为内存空间的申请和成员变量的初始化。
实例化的方法:

(1) new方法

格式:类名 *对象名= [类名 new];

示例:Car *car = [Car new];

使用new实例化对象进行三部分操作:

1)为类申请内存空间

2)成员变量初始化

3)将内存空间地址返回给对象名

(2) alloc与init方法

alloc为申请内存空间操作,init为初始化操作。

格式:类名 *对象名=[[类名 alloc] init];

示例:Car *car =[[Car alloc] init];

4.2对象方法的调用

(1) 无参对象方法的调用

格式:[对象名 方法名];

示例代码:

Car *car = [Car new];
[car run];

(2) 含参数对象方法的调用

格式:[对象名 方法名一:参数一 方法名二:参数二……];

示例代码:

Calculator cal = [Calculator new];
int result = [cal sum:3 and:2];

5、多文件开发

头文件的编写,内容主要是类的声明与头文件的引入。

代码示例:

//Car类声明Car.h文件
#import <Foundation/Foundation.h>

@interface Car:NSObjet
{
	int _speed;//车运行时速
}
- (void)run;//对象方法	
@end

源文件的编写,内容主要是类方法与对象方法的实现。

代码示例:

//Car类实现Car.m文件
#include "Car.h" 
@implementation Car
- (void)run{
   NSLog(@"小车正在以%d的速度,奔跑在小路上",_speed);
}
@end

主函数的调用,代码示例:

<span style="font-size:14px;">#import <Foundation/Foundation.h>
#include "Car.h"//将Car类声明文件引入

int main(int argc, char* argv[]){
	@autoreleasepool{
	    Car *car = [Car new];//实例化对象car
            car->_speed = 50;
            [car run];//调用对象方法run
	}
	return 0;
}</span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值