iOS学习之Object-C语言类和对象
2024-08-26 21:04:32
一、OC语言的特点:封装,继承,多态;包含一个运行时系统;类库丰富。
二、面向对象
1、概述
OOP(Object Oriented Programming)面向对象编程。
面向对象以事物为中心,完成某件事情都需要哪些事物来参与,参与该事件的事物都有哪些功能,完成该事件需要这些事物相互协作共同完成,并且完成该事件只是所有事物功能中其中的一个小功能。
2、特点
分析该问题需要参与的对象,各个对象的作用,完成该事件需要多个对象协同完成该任务。
3、侧重点
对象的设计。
4、优点
(1)面向对象具有良好的可扩展性和重用性;
(2)面向对象可以降低我们代码的耦合度,提高代码的可移植性;
(3)面向对象接近于日常生活和自然的思考方式,可以提高我们软件开发的效率和质量。
5、面向对象编程的核心是转变考虑问题的⽅式。
三、类和对象的概念和区别
1、类:具有相同特征和行为的事物的抽象。
2、对象是类的实例,万事万物皆对象。 类是对象的类型。
四、类和对象的定义
1、NSLog:OC中的输出函数,输出内容会包括日期,时间,工程名,输出内容,内容输出完成后自动换行。
2、@“”:OC中用来表示字符串
3、.h文件里
@interface…@end:类的接口部分(声明部分),成对出现。用来声明类的实例变量(特征)和方法(行为)。
@interface Person :NSObjcet (Person表示类名,:表示继承关系,:后面的类名表示父类名,NSObject 基类)。
4、.m文件里
@implementation和@end成对出现,类的实现部分。
@implementation Person (Person 表示类名)。实现Person类中定义的方法
5、面向对象的核心思想是类和对象。
6、OC中类的定义分为两个部分:接口部分和实现部分。
7、 声明实例变量,命名以下划线开头。OC中的类型,声明实例变量的时候后面加*,C语言中的基本数据类型,类型后面不需要加*,首字母小写,遵循驼峰命名法。
8、定义方法:OC中的方法分为两类:
第一种,’+’ 号方法(类方法) 由类名调用;第二种,’-’ 号方法(对象方法或者称为实例方法)由对象调用;定义时将返回值类型用()括起来
9、创建对象
(1)定义类
(2)开辟存储空间
(3)初始化
第一种
Person *person1 = [Person alloc];
person1 = [person1 init];
第二种
Person *person2 = [[Person alloc] init];(最常用的)
第三种
Person *person3 = [Person new]; (new 等同于 alloc 和 init)
(OC中使用[ ]给方法发送消息)
[person1 eat]; ( 使用对象名去调用对象方法)
[person2 sleep];
[Person study]; (使用类名去调用类方法)
10、instancetype和id的区别(instancetype 实例对象)
(1)instancetype可以返回和方法所在类相同类型的对象,id只能返回位置类型的对象。
(2)instancetype只能作为返回值和参数,id还可以用来定义变量
(3)instancetype会告诉编译器当前的类型,但id对于编译器却是无类型的,
调用任何方法都不会给出错误提示。
(4)对于init方法,id和instancetype是没有区别的。因为编译器会把id优化成instancetype。当明确返回的类型就是当前Class时,使用instancetype能避免id带来的编译不出的错误情况。
(5)id和instancetype都可以作为方法的返回值类型,都表示任意类型的对象
五、实例变量的操作
1、@public 公共的 外界可以直接访问,可以被子类继承
2、@protectde 受保护的 外界无法访问,可以被子类继承
3、@private 私有的 外界无法访问,不可以被子类继承
4、实例变量没有指定可见度的情况下,默认是@protected
六、方法
1、setter方法(设置器)
(1)作用:提供一个方法给外界设置成员变量,可以在方法里面对参数进行相应的过滤。
(2)命名规范
1)方法名必须以set开头;
2)set后面跟上成员变量的名称,成员变量的首字母必须大写;
3)返回值一定是void;
4)一定要接收一个参数,而且参数类型和成员变量类型一致;
5)形参的名称不能跟成员变量名一样。
2、getter方法(访问器)
(1)作用:返回对象内部的成员变量。
(2)命名规范
1)肯定有返回值,返回类型肯定与成员变量类型一致;
2)方法名为成员变量名去掉下划线_,成员变量在定义时,一般以下划线_开头;
3)不需要接收任何参数
3、定义实例变量的setter和getter方法:实例变量如果是受保护类型的,外界无法直接访问,外界如果要访问实例变量,需要本类提供方法,外界访问的话直接调用相应的方法即可。外界操作实例变量通常对实例变量赋值和取值操作:setter:本类提供的用来给实例变量赋值的方法;getter:本类提供的用来给实例变量取值的方法
4、多个参数的方法名
setHobby: ()hobby weight: ()weight address: ()address isMarried:()isMarried;
最新文章
- java类
- oracle 第一章总结
- Online Judge中基本的输入输出
- RabbitMQ(四) -- Routing
- GridView用法大全(转)
- 动态代理实现AOP【转】
- zookeeper的一些异常总结
- 手动实现 KVO
- Web前端开发:SQL Jsp小项目(一)
- Android常见开发思路
- Could not reliably determine the server's fully qualified domain name
- 老李分享:pep8 python代码规范
- 面向对象编程 —— java实现函数求导
- 自学Zabbix3.5.5-监控项item-User parameters(自定义key)
- Oracle_复杂查询综合
- thinkphp无法加载控制器:Admin
- 实现Windows数据绑定
- [面试]死锁-最简单的死锁demo
- [Swift]LeetCode446. 等差数列划分 II - 子序列 | Arithmetic Slices II - Subsequence
- MySQL根据某个字段查询重复的数据