IOS--Day04---类与对象,继承 ,实例,属性,点语言
创建一个类需要两个部分:接口和实现
-----
.h 头文件 相当于接口
@interface Aa: NSObject //基类
{
//成员变量声明
//大括号内部,添加当前类属性
//字符串类型
NSString *name; //姓名 NSString是一个类
//整型类型
NSInteger age; //年龄 是数值类型 不是类
NSString *gender;
}
//方法声明
@end
------
.m文件相当于实现类
#import "Aa.h"
@implementation aa
{
方法实现
}
@end
-------
.mm 实现文件 出来包含OC代码和C代码外,还可以包含C++代码,仅当实际引用OC代码中的C++类或功能时才使用此扩展名
所以创建一个类 三个关键字是 @interface @implementation @end
----------------------------------------------------------------
设置器和访问器(setter getter)
.h文件中声明
-----
//设置器 setter
-(void) setName:(NSString *)_name;
-(void) setAge:(NSInteger)_age;
-(void) setGender:(NSString *)_gender;
//访问器 getter
-(NSString *)getName;
-(NSInteger)getAge;
-(NSString *)getGender;
----
.m文件中实现
//设置器 setter
-(void) setName:(NSString *)_name{
name = _name;
}
-(void) setAge:(NSInteger)_age{
age = _age;
}
-(void) setGender:(NSString *)_gender{
gender = _gender;
}
//访问器 getter
-(NSString *)getName{
return name;
}
-(NSInteger)getAge{
return age;
}
-(NSString *)getGender{
return gender;
}
------------
继承
---不同于JAVA OC中只允许每个类有且只有一个父类
@interface childClass: superClass{}
可以重写父类方法
继承具有传递性
-----
方法
OC中 方法分两大类 :类(+)方法和实例(-)方法
类方法必须通过类名来调用 相当于java中static方法
实例方法必须用实例对象来调用
---------
OC中的实例化方法:自定义初始化方法和便利构造器
自定义初始化方法
创建对象分两步:分配空间和初始化
初始化方法的作用就是为对象赋初始值 通常以init开头
一个类可以包含多个初始化方法 但是有且只有一个初始化方法 无论调用哪一个初始化方法 指定初始化方法都会执行,指定初始化方法和父类的初始化方法有一定联系
-------
便利构造器
是一种快速创建对象的方式 本质就是把初始化方法做了一次封装
是一个类(+)方法
--------
self 和 super OC关键字
super :将消息发送给父类对象
self:将消息发送给本对象
self始终代表接受消息的对象
-----------
属性------ 是一组设置器和访问器 需要声明和实现
和实例变量不同 属性是一组方法,实例变量是一个变量
.h中
@property int age;
相当声明了setter,getter
.m中
@synthesize age=_age; //_age 默认的添加为当前类的实例变量
相当于实现了setter,getter
属性的特性
主要包括三个方面:
读写特性
readwrite 可读写(既有设置器也有访问器)
readonly 只读(只有访问器)
getter = 方法名 指定访问器的方法名
setter = 方法名 指定设置器的方法名
原子性特性
nonatomic 非原子性,不保证多线程安全
atomic 原子性,多线程访问时较安全
语义特性
assign 直接赋值 适用于基本数据类型
retain 赋值时做内存优化 适用于对象类型
copy 复制一个副本 适用于特殊的对象类型 (实现了NSCopying协议的对象)比如字符串
---
点语法
一旦有了实例变量的设置器和访问器就可以使用OC的点语法
p.age = 20; 等价于 [p setAge:20];
int age = p.age; 等价于 int age = [p age];
点语法和[receiver message]等价
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。