OC语言中的类和对象
2015-05-24 21:58
113 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
一、类和对象的设计
1. 类的设计只关心三样东西:
(1)事物名称(类名)(有意义)比如人:Person(类名的首字母必须大写,不能有下划线,多个单词时使用驼峰标识)
(2)属性:身高(height),年龄(age)
(3)行为(功能):跑(run),吃(eat)
2. 具有相同(或者类似)属性和行为的对象都可以抽象出一个类
3. 完整的一个类必须有类的声明和类的实现
(1)类的声明 // 声明对象的属性(行为)
@interface 类名 {属性}
@end //类的声明完毕
(2)类的实现
@implementation 类名
@end //类的实现完毕
4. 利用一个类可以创建出对象,并且调用对象的某个方法,就可以让对象拥有一系列行为
5. 方法与函数的区别
(1)对象的行为(方法)声明放到@interface和@end 之间,但不能放{}里面,实现放@implementation和@end之间
(2)对象方法归类和对象所有,都是以 - 开头,只能由对象调用
(3)函数能写在文件的任意位置,函数归文件所有
(5)函数调用不依赖于对象
(6)函数内部不能直接通过成员变量名访问某个对象的成员变量
6. 创建一个完整的车(Car)类
#import <Foundation/Foundation.h> //因为使用了NSObject
//类的声明
@interface Car:NSObject // NSObject 的目的是让Car这个类具备创建对象的能力
{
@public //可以让外部指针间接访问成员变量的值
int wheels //轮子数
int speed //速度 (wheels,speed叫成员变量,也称实例变量,用来声明对象属性,默认初始化为0)
}
-(void)run //方法的声明
@end
//类的实现
@implementation Car
-(void)run
{
NSLog(@"%d个轮子,速度为%d的车子跑起来了",wheels,speed) //方法的实现
}
@end
int main()
{
Car *c=[Car new]; //指针变量c指向Car 这个类创建出的新对象,存储的是地址
c->wheels=4; //给c所指向对象的wheels属性赋值
c->speed=250; //给c所指向对象的speed 属性赋值
[c run] //给c所指向的对象发送一条run消息,指向-(void)run
return 0;
}
*注意点:(1)不允许给成员变量赋初值
(2)类的实现可以放main()后面,但类的声明必须放main()之前
二、对象的内存分析
1. 类也占存储空间,在使用类创建对象之前,会把类加载进内存(只有一次)
2. 类里面的放的是方法列表
3. 每个对象内部默认都含有一个isa指针,指向类,所以,所有对象都共用一套方法
4. OC 对象即使在函数被调用完之后也不会被回收
三、方法的声明和调用
1. 不带参数的方法
声明 调用
2. 带一个参数的方法
声明 调用
3. 带多个参数的方法
声明 调用
4. 方法名注意
(1)冒号也是方法名的一部分
(2)同一个类中不允许两个对象方法同名
四、匿名对象(没有名称的对象)
[Car new]->speed =300; (不推荐这种写法)
-------
一、类和对象的设计
1. 类的设计只关心三样东西:
(1)事物名称(类名)(有意义)比如人:Person(类名的首字母必须大写,不能有下划线,多个单词时使用驼峰标识)
(2)属性:身高(height),年龄(age)
(3)行为(功能):跑(run),吃(eat)
2. 具有相同(或者类似)属性和行为的对象都可以抽象出一个类
3. 完整的一个类必须有类的声明和类的实现
(1)类的声明 // 声明对象的属性(行为)
@interface 类名 {属性}
@end //类的声明完毕
(2)类的实现
@implementation 类名
@end //类的实现完毕
4. 利用一个类可以创建出对象,并且调用对象的某个方法,就可以让对象拥有一系列行为
5. 方法与函数的区别
(1)对象的行为(方法)声明放到@interface和@end 之间,但不能放{}里面,实现放@implementation和@end之间
(2)对象方法归类和对象所有,都是以 - 开头,只能由对象调用
(3)函数能写在文件的任意位置,函数归文件所有
(5)函数调用不依赖于对象
(6)函数内部不能直接通过成员变量名访问某个对象的成员变量
6. 创建一个完整的车(Car)类
#import <Foundation/Foundation.h> //因为使用了NSObject
//类的声明
@interface Car:NSObject // NSObject 的目的是让Car这个类具备创建对象的能力
{
@public //可以让外部指针间接访问成员变量的值
int wheels //轮子数
int speed //速度 (wheels,speed叫成员变量,也称实例变量,用来声明对象属性,默认初始化为0)
}
-(void)run //方法的声明
@end
//类的实现
@implementation Car
-(void)run
{
NSLog(@"%d个轮子,速度为%d的车子跑起来了",wheels,speed) //方法的实现
}
@end
int main()
{
Car *c=[Car new]; //指针变量c指向Car 这个类创建出的新对象,存储的是地址
c->wheels=4; //给c所指向对象的wheels属性赋值
c->speed=250; //给c所指向对象的speed 属性赋值
[c run] //给c所指向的对象发送一条run消息,指向-(void)run
return 0;
}
*注意点:(1)不允许给成员变量赋初值
(2)类的实现可以放main()后面,但类的声明必须放main()之前
二、对象的内存分析
1. 类也占存储空间,在使用类创建对象之前,会把类加载进内存(只有一次)
2. 类里面的放的是方法列表
3. 每个对象内部默认都含有一个isa指针,指向类,所以,所有对象都共用一套方法
4. OC 对象即使在函数被调用完之后也不会被回收
三、方法的声明和调用
1. 不带参数的方法
声明 调用
2. 带一个参数的方法
声明 调用
3. 带多个参数的方法
声明 调用
4. 方法名注意
(1)冒号也是方法名的一部分
(2)同一个类中不允许两个对象方法同名
四、匿名对象(没有名称的对象)
[Car new]->speed =300; (不推荐这种写法)
相关文章推荐
- 黑马程序员-OC语言-对象和方法之间的关系(听课笔记)
- OC语言之学习篇——01——类和对象
- 【OC语言】第二篇·对象的作用、字符串类型以及多文件开发
- 黑马程序员--ios基础--oc语言--类和对象
- 第02天OC语言(10):对象作为返回值
- 黑马程序员-OC语言基础:面向对象语法 二
- 第05天OC语言(03):单个对象内存管理
- 【OC语言】第一篇·Objective-C概述和面向对象
- 第02天OC语言(09):对象作为方法的参数连续传递下
- 黑马程序员-OC语言基础:面向对象语法 四
- [黑马IOS自学第十篇]OC语言基础,面向对象概念,类学习
- OC语言中的类和对象
- 黑马程序员 - OC语言 - 单个对象内存管理(野指针)
- 第02天OC语言(08):对象作为方法的参数连续传递上
- 黑马程序员-OC语言基础:面向对象语法 三
- 第04天OC语言(17):获取类对象及类对象应用场景
- 黑马程序员-OC语言类和对象
- 黑马程序员——OC语言基础篇---面向对象之三大特性
- 第06天OC语言(05):ARC中对个对象内存管理
- [黑马IOS自学第十一篇]OC语言基础,SELF关键字,面向对象概念,类学习多态,继承@property等