首页 > 代码库 > IOS--Day04---类与对象,继承 ,实例,属性,点语言

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]等价

 

IOS--Day04---类与对象,继承 ,实例,属性,点语言