IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> OC——类与对象 -> 正文阅读

[移动开发]OC——类与对象

OC——类与对象

面向对象的程序设计过程中有两个重要的概念:类和对象,其中类是某一批对象的抽象,可以把类理解成某种概念,对象才是一个具体存在的实体,从这个意义上看,我们日常所说的人其实都是人的实例而不是人类吧。
对于面向对象编程来说,成员变量和方法都是非常重要的概念:
🎇成员变量:用于描述该类的对象的状态数据,比如:我们定义一个人,可能需要关心人的性别,年龄,身高等状态数据,那么就应该将这些状态定义为成员变量。
🎇方法:用于描述该类的行为。比如:程序需要关心人具有走路,吃饭,工作等行为,那么程序就应该为人这个类声明走路吃饭工作等方法。

总的来说,如果我们把人定义成一个类,那么对象就可以理解为张三,李四,等一个个的人,而成员变量就指的是这个人的特征,也就是身高,体重等,方法就是表示类的行为,比如吃饭,睡觉等。

Objective-C中定义类需要分为两个步骤:
🎇接口实现:定义该类包含的成员变量和方法
🎇实现部分:为该类的方法提供实现
然后我们来看看怎么实现一个类的定义:
首先我们要写类的接口部分,语法格式如下图:
在这里插入图片描述
我们就按照这个格式来声明一个类

#import <Foundation/Foundation.h>
//接口部分
@interface FKPerson : NSObject {
    //成员变量声明
    NSString *_name;
    int _age;
}
//方法声明
- (void)setName:(NSString *)name andAge:(int)age;
- (void)say:(NSString *)content;
- (NSString *)info;
+ (void)foo;
@end

方法
在这里我们看到方法声明里,有的前面加上+,有的前面加上了-,+代表的是该方法是类方法,直接用类名即可调用,-代表该方法是实例方法,必须用对象才能调用。
顺便我们来看看方法声明的语法:

在这里插入图片描述
对于方法的使用要注意以下几个方面:
🎆方法不能独立定义,只能在类体里定义
🎆从逻辑意义上看,方法要么属于该类的本身,要么属于该类的一个对象
🎆永远不能独立执行方法,执行方法必须使用类或对象作为调用者

通过刚才对方法的了解,我们可以看出方法和函数有很多相同的地方,其中有一个不同点就是方法的形参数量可变,如果在形参名后加上逗号和三点(,…),则表示该形参可以接受多个参数值,下面我们来定义一个形参个数可变的方法:

#import <Foundation/Foundation.h>

@interface VarArgs : NSObject
//定义形参个数可变的方法
-(void)test: (NSString *) name,...;
@end 

为了在程序中获取个数可变的形参,需要使用如下关键字:
🎇va_list :这是一个类型,用于定义指向可变参数列表的指针变量
🎇va_start :这是一个函数,该函数指定开始处理可变形参的列表,并让指针
🎇va_end: 结束处理可变形参,释放指针变量
🎇var_arg:该函数返回获取指针当前指向的参数的值,并将指针移动到指向下一个参数。

🎆🎆🎆
然后我们来看类实现部分的语法:
在这里插入图片描述
然后按照上面的类实现部分的语法,我们来对上面声明过的类进行实现:

//实现部分
@implementation FKPerson {
    //隐藏的成员变量声明(只能在当前类内访问)
    int _testAttr;
}
//方法定义
- (void)setName:(NSString *)n andAge:(int)a {
    //方法体:设置姓名年龄
    _name = n;
    _age = a;
}
- (void)say:(NSString *)content {
    //方法体:输出字符
    NSLog(@"%@", content);
}
- (NSString *)info {
    //方法体:输出姓名年龄
    [self test];
    return [NSString stringWithFormat:
            @"姓名:%@,年龄:%d", _name, _age];
}
- (void)test {
    //方法体:输出字符串(仅在实现部分定义)
    NSLog(@"只在实现部分定义的test方法");
}

+ (void)foo {
    //方法体:输出字符串
    NSLog(@"FKPerson类的类方法,通过类名调用");
}
@end

我们在上面代码里看到了[self test];这一串代码,这个代码中用到了self这个关键字,这个关键字的作用就是在一个方法中调用另一个方法。上述代码就是说在info这个方法里调用text这个方法。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:33:45  更:2022-05-11 16:34:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 1:29:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码