IOS学习笔记 (二)类和对象
来源:互联网 发布:移动硬盘和mac不兼容 编辑:程序博客网 时间:2024/05/22 13:24
面向对象(Object-Oriented Programming)的首字母缩写:OOP
1、类定义
在Xcode中添加文件,选择Cocoa Class 或者Cocoa Touch Class,默认生成如下两个文件
Person.h
Person.m
在Objective-C中定义一个类需要两个文件.h和.m:
- .h文件:放类的声明,包括成员变量、属性和方法声明(事实上.h文件不参与编译过程);关键字@interface声明一个类,同时它必须以@end结束,在这两个关键字中间声明相关成员;在声明Person类的同时可以看到它继承于NSObject,这是Objective-C的基类,所有的类最终都继承于这个类(但是需要注意Objective-C中的基类或者根类并不只有一个,例如NSProxy也是Objective-C的基类),由于这个类在Foundation框架中定义,所以导入了<Foundation/Foundaton.h>(意思是导入Foundation框架中的Foundation.h声明文件);
- .m文件:放属性、方法的具体实现;关键字@implementation用于实现某个类,同时必须以@end结尾,在这两个关键字中间实现具体的属性、方法;由于.m中使用了Person类,所以需要导入声明文件“Person.h”;
成员的可访问性通过下面四个关键字声明
(1)@private 私有成员,只有当前类可以访问;
(2)@protected 受保护成员,只有当前类或子类可以访问,如果没有添加任何修饰则默认为@protected;
(3)@public 公共成员,所有类均可访问;
(4)@package不太常用,它类似于C#中的internal在框架内是公共的,但是框架外是私有的(也就是只能在一个框架内可以访问)
注意:
(1)ObjC中所有的对象类型的变量都必须加上“*”,在ObjC中对象其实就是一个指针(例如之前看到的NSString也是如此,但是基本类型不用加”*”);
(2)Objective-C中使用[]进行方法调用,在Objective-C中方法调用的本质就是给这个对象或类发送一个消息;
(3)在Objective-C中类的实例化需要两个步骤:分配内存、初始化;
(4)类的初始化调用了父类的init方法,如果使用默认初始化方法进行初始化(没有参数),内存分配和初始化可以简写成[Person new];
(5)公共成员的调用使用“->”操作符;
3、方法和属性
在Objective-C中方法分为静态方法和动态方法两种,这一点跟其他高级语言没有区别。在Objective-C中使用“-”定义动态方法,使用“+”定义静态方法。如果一个方法在.h中有声明则该方法是公共方法,如果没有在.h中声明直接在.m中定义则该方法是私有方法,外部无法访问。
.h
.m
2个参数实现方法如下
在Objective-C中属性的实现方式其实类似于Java中属性定义,通过对应的setter和getter方法进行实现,如phonenum
.h
.m
未完待续
- IOS学习笔记 (二)类和对象
- oc学习笔记(二)面向对象-类和对象
- C++学习笔记(二):类和对象
- C++学习笔记——类和对象(二)
- C++学习笔记之二--类和对象
- Kotlin学习笔记(二)-类和对象
- Java学习笔记(二)——类和对象
- 黑马程序员-ios学习笔记 oc 类和对象
- iOS学习笔记-Objective-C-类和对象
- 黑马程序员——IOS学习笔记(类和对象)
- iOS学习笔记二
- iOS学习笔记(二)
- IOS学习笔记二
- IOS学习笔记二
- 学习笔记-类和对象
- java类和对象学习笔记(二)数据域封装和可见性修饰符
- ios学习二:处理类和对象的关系(来源objective-c基础教程)
- Javascript学习笔记(二)Javascript核心之对象和数组
- android的BuildConfig学习
- android APK应用安装过程以及默认安装路径
- linux重装系统 一些问题
- OpenCL 原理架构
- Java之美[从菜鸟到高手演变]系列之博文阅读导航
- IOS学习笔记 (二)类和对象
- Linux 下安装IntelliJ IDEA Community Edition
- Mycat安装部署
- 友盟微信分享返回app崩溃
- 关于管理
- leetcode 122
- MyEclipse使用总结——MyEclipse10安装SVN插件
- Android尺子布局和自定义TextView
- Android 实现Back按键的三种方法