【学习笔记】【oc】类和对象及类的三大基本特征
1.类和对象
类是抽象化,对象是具体化。
(1)定义类:
分为两个步骤,类的声明:定义类的成员变量和方法;@interface 用于声明定义类的接口部分,@end表面定义结束;。
成员变量的定义:{}用于声明该类的成员变量;语法:基本类型 成员变量名;
方法的定义:语法:方法类型标识符(+表示类方法,-表示实例方法)(方法返回值类型)方法签名关键字:(参数类型)(参数名)
方法签名关键字:方法名,形参标签,冒号。
(所有方法必须用括号括起来)
类的实现:实现类定义的方法。(在类的接口部分没有声明的方法和变量,只能在类的实现部分使用)。
ps:方法实现跟声明中的形参名可以不同,因为形参名仅仅相当于一个占位符。
(2)对象的产生和使用
三方面来实用类:(1)定义变量 类名* 变量名
(2)创建对象 [[类名 alloc]init];/[类名 new];
(3)调用类方法 [调用者 方法名:参数 形参标签:参数值...];
如果条件允许,可直接通过对象来访问成员变量。语法格式:对象->成员变量名;
对象和指针: 类也是一种指针类型,定义一个指针变量,指向实际的类对象,类对象存放在堆内存中。
(3)self关键字
作用:让类中的一个方法可以调用类中的其他方法或其他成员变量。
局部变量跟成员变量重名时,局部变量会隐藏成员变量,可用self强行引用成员变量。
记得:谁调用方法或成员变量,self就表示谁。
(4)动态绑定 id类型
动态绑定:oc会自动跟踪对象所属的类,它会在运行时判断该对象所属的类,并确定需要动态调用的方法,而不是在编译的时候确定要调用的方法。
定义id类型的变量时,当其调用方法时会执行动态绑定。
ps:
id *p=[类 alloc]init]; // p.age将会提出警告。
// 指针变量在编译阶段只能调用其编译时类型所具有的方法,但运行时则执行其运行时类型所具有的方法,所以在编译时不能用id类型定义的指针来直接调用成员变量。
(5)对象的初始化
自定义初始化方法:
-(id)init
{
//调用父类的init进行初始化
//将初始化的对象赋值给self,如果self不为nil说明初始化成功执行接下来的代码
if(self=[super init])
{
//方法块
}
return self;
}
2.类的三大特征:封装,继承,多态
2.1:类的封装:
是什么:类要隐藏成员变量,只提供方法让外界修改。
有什么用:隐藏类的实现细节;让使用者只能使用类提供的方法来访问类的内部,可以在方法添加逻辑,从而控制对成员变量的合理访问;
可进行数据检查,保证对象信息的完整性;便于修改,提高代码的可维护性。
怎么做:隐藏对象的成员变量和方法的实现,不允许外界的直接访问;
把方法暴露出来,让方法来控制对这些成员变量进行完全的访问和操作。
----隐藏方式,访问控制符:
@private:只能在定义的类(当前类)中使用
@package:同个映像中使用
@private:类及其子类中使用
@public:大家都可以用
设置,修改获取对象的成员变量方法:
(1)自己定义 getter,setter方法
(2)系统自带的 合成存取方法(构造析构函数):
使用@property定义属性;使用@synthesize修改对应的成员变量名。
定义property时可在@property和类型中用括号添加一些额外的指示符。
@property(...)int a;
assign:
atomic(nonatomic):是否线程安全
copy:使用copy时,当使用setter方法时,会将要赋值的对象copy一个副本,再将副本传递给成员变量。
getter,setter:为系统的getter,setter方法改名
readonly,readwrite:
retain:
(3)点语法:
(4)KVC方法:
2.2类的继承:(单继承:直接父类只有1个)
类通过定义子类来继承父类。
父类又叫超类,基类。
当子类可以使用父类所有的成员变量和方法。
子类可重写父类的方法,子类调用覆盖了父类的方法可以用super关键字。
2.3类的多态:
转载于:https://www.cnblogs.com/stxrong/p/4550120.html
【学习笔记】【oc】类和对象及类的三大基本特征相关推荐
- C++学习笔记-第4单元-对象和类(基础)
C++学习笔记 文章目录 C++学习笔记 第4单元 对象和类(基础) 单元导读 4.1 用类创建对象 4.1.1 对象和类 4.1.2 创建对象并访问 4.2 对象拷贝.分离声明与实现 4.2.1 对 ...
- python中简述对象和类的关系_Python学习笔记(七)对象和类
什么是对象 Python中所有的数据都是以对象的形式存在,无论是简单的数字类型还是复杂的代码模块.在Python中,当我们想要创建属于自己的对象或者修改已有对象的行为时,才需要关注对象的内部实现细节. ...
- Python 学习笔记 系统模块 面对对象思想 类和对象 类中的方法与对象 构造函数和析构函数
一.系统模块: UTC:国际标准时间, 格林尼治天文时间,UTC+8 时间戳:指定时间距离1970.1.1 00:00:00的秒数 time:时间 datetime:日期 calendar:万年历 o ...
- Java快速入门学习笔记7 | Java语言中的类与对象
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...
- QT学习笔记(十一):QString类
QT学习笔记(十一):QString类 1.概述 2.编辑操作 3.查询操作 3.转换操作 1.概述 1.1 QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中.QStr ...
- Guava学习笔记:简化异常处理的Throwables类
Guava学习笔记:简化异常处理的Throwables类 参考文章: (1)Guava学习笔记:简化异常处理的Throwables类 (2)https://www.cnblogs.com/peida/ ...
- php函数、类和对象以及类的封装、继承、类的静态方法、静态属性
php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 原文:php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 1.函数 php内置函数可以直接使用,如果没有安装php扩展即可 ...
- java类与对象_Java类与对象
类与对象 1,面向对象编程简介 Java语言最大的特点在于面向对象的编程设计,并且面向对象的编程设计也在由于Java自身的发展而不断发展.面向过程编程(C语言).函数式编程(Scala).面向对象编程 ...
- JavaScript学习笔记02【基础——对象(Function、Array、Date、Math)】
w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...
最新文章
- 【HDU】1005 Number Sequence (有点可爱)
- 存储过程--分页与C#代码调用
- RS-232 Transmitter
- java 遍历xml子节点,Axiom解析XML,axiomxml,1、遍历XML全部节点,
- python怎么自动中文版_Python实现AI自动版贪吃蛇
- 人工智能和人类智能的类比
- boost::filesystem模块实现相对文件系统的测试程序
- 借钱年利息15%,借款人将房产证抵押并公证,有无风险?
- MySQL max()函数
- python的基础字典_python 基础之字典一
- Android知识体系框架
- 马斯克“够狂”!发布“全世界最好的芯片”、推出自动驾驶Taxi,特斯拉鸣锣新战场...
- Android LinearLayout 线性布局
- swift 系统自带的约束使用
- 监控服务器ssh登录,并发送报警邮件
- 2022最新第四方聚合支付系统源码+详细搭建教程
- GRE over IPSec 主备双链路冗余配置
- linux下串口(serial)和串口驱动
- 从零学计算机网络、TCP、IP、路由器、Vlan、HCIA-数通
- 数据分析EXCEL入门必备
热门文章
- python项目-你肯定想学习的顶级Python项目(附代码)
- 在哪里能收到python实例代码-Python分类测试代码实例汇总
- python语法基础知识总结-python语法基础知识
- 自学python需要买书吗-Python真的适合每个人学习吗 学习Python需要多久
- python培训中心-想学python,上海Python培训中心哪个好?
- python读取excel表格-python读取excel表格中的数据
- 关于python中程序流程结构-Python语言程序设计(第4章:程序结构设计)
- python课程怎么样-python课程体系是怎么样的?
- python英文单词-python常用150个英文单词
- python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识