=========================================================================
类和对象
============================================================================
类的声明和实现
1.关于类的几个名词
类
.h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@iterface和@end;
注意:.h中的方法只是做一个生命,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返
回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。
.m:类的实现文件,用于实现.h中生命的方法。类的实现使用关键字@implementation和@end。
------------------------------------------------------------------------------------
方法
方法的声明和实现,都必须以 + 或者 - 开头
+ 表示类方法(静态方法)
- 表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型,不能更改
---------------------------------------------------------------------------------
成员变量(实例变量/属性)
成员变量的常用作用域有3中:
@public 全局都可以访问;
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
=================================================================================
2.类的定义分为两部分:
1.类的声明(规定当前类的:类名、属性、行为)
@interface 类名:父类名
{
//定义类的属性
}
//类的行为
@end // @interface和@end要成对出现
2.类的实现(实现具体的行为)
@implementation 类名
//行为的具体实现
@end
类的实现这段语句不能省略,即使没有具体实现行为的情况下!
==============================================================================
创建一个对象并访问成员变量
1.创建一个对象
在OC中用已经存在的类,如何创建一个对象?
类名 Car类型的指针变量 使用类名调用new类方法
Car * car = [ Car new ];
理解方式一:
1.定义了一个Car类型的指针变量;
2.指针变量指向新申请的内存空间;
理解方式二:
用Car类实例化了一个实例对象,对象的名称是car;
[Car new]:做了三件事情
1.向计算机申请内存空间;
2.给类中的每一个成员初始化值;
3.返回新申请的空间的首地址;
------------------------------------------------------------------------------
2.访问成员变量
例:
#import <Foundation/Foundation.h>
@interface Car : NSObject
{
@public //使下面的三个成员变量变成全局变量
int lunzi;
NSString *color;
int speed;
}
@end
@implementation Car
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car * car1 = [Car new];
car1->color = @"blue";
car1->lunzi = 3;
car1->speed = 180;
NSLog(@"%@,%d,%d",car1->color,car1->lunzi,car1->speed);
}
return 0;
}
值得注意的是,若要以此法访问成员变量并赋值的话,必须在类的声明中加上@public,使类中的成员变量变为全局变量。
========================================================================================
无参方法声明实现及调用
@interface:Car: NSObject
{
int lunzi;
int speed;
NSString *pp;
}
//行为,车跑的方法
-(void)run; //定义了一个无参无返回值的方法
-(void)stop;
@end
@implementation Car
//方法具体的实现
-(void)run{
NSLog(@"车跑在乡间的大道上");
}
-(void)stop{
NSLog(@"咯吱,车停了!");
}
@end
------------------------------------------------------------------------------------------
方法的调用
使用对象调用方法就是OC中的消息机制
OC语言中蚕蛹特定的语言调用类或者实例(对象)的方法称为发送消息或方法调用
OC中方法的调用有两种:
1. [类名或者对象名 方法名];
如: [car run]; //向car对象发送一条run方法的消息
--------------------------------------------------------------------------------------
OC中的方法分为:对象方法和类方法
对象方法:
1.对象方法以 - 开头如 -(void)xx;
2.对象方法只能由对象来调用
3.对象方法中可以访问当前对象的成员变量
4.调用格式 [对象名 对象方法名]
类方法:
1.类方法以 + 开头,如 +(void)put;
2.类方法只能由类来调用
3.类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成 员变量。
4.调用格式:[类名 类方法名];
==========================================================================================
有参数的方法的定义和实现
有参方法声明实现及调用
声明,例:
-(double)sumOfNum1:(double)num1 andNum2:(double)num2;
即:
-(返回值类型)方法名1:(参数类型)参数名; //有一个参数的方法
-(返回值类型)方法名1:(参数类型)参数名(空格)and:(参数类型2)参数名2;
//有两个参数的方法,此处的方法名为 sum: and:(死记!冒号是方法名的一部分!!!! )
类和对象
============================================================================
类的声明和实现
1.关于类的几个名词
类
.h:类的声明文件,用于声明成员变量、方法。类的声明使用关键字@iterface和@end;
注意:.h中的方法只是做一个生命,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返
回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。
.m:类的实现文件,用于实现.h中生命的方法。类的实现使用关键字@implementation和@end。
------------------------------------------------------------------------------------
方法
方法的声明和实现,都必须以 + 或者 - 开头
+ 表示类方法(静态方法)
- 表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型,不能更改
---------------------------------------------------------------------------------
成员变量(实例变量/属性)
成员变量的常用作用域有3中:
@public 全局都可以访问;
@protected 只能在类内部和子类中访问
@private 只能在类内部访问
=================================================================================
2.类的定义分为两部分:
1.类的声明(规定当前类的:类名、属性、行为)
@interface 类名:父类名
{
//定义类的属性
}
//类的行为
@end // @interface和@end要成对出现
2.类的实现(实现具体的行为)
@implementation 类名
//行为的具体实现
@end
类的实现这段语句不能省略,即使没有具体实现行为的情况下!
==============================================================================
创建一个对象并访问成员变量
1.创建一个对象
在OC中用已经存在的类,如何创建一个对象?
类名 Car类型的指针变量 使用类名调用new类方法
Car * car = [ Car new ];
理解方式一:
1.定义了一个Car类型的指针变量;
2.指针变量指向新申请的内存空间;
理解方式二:
用Car类实例化了一个实例对象,对象的名称是car;
[Car new]:做了三件事情
1.向计算机申请内存空间;
2.给类中的每一个成员初始化值;
3.返回新申请的空间的首地址;
------------------------------------------------------------------------------
2.访问成员变量
例:
#import <Foundation/Foundation.h>
@interface Car : NSObject
{
@public //使下面的三个成员变量变成全局变量
int lunzi;
NSString *color;
int speed;
}
@end
@implementation Car
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car * car1 = [Car new];
car1->color = @"blue";
car1->lunzi = 3;
car1->speed = 180;
NSLog(@"%@,%d,%d",car1->color,car1->lunzi,car1->speed);
}
return 0;
}
值得注意的是,若要以此法访问成员变量并赋值的话,必须在类的声明中加上@public,使类中的成员变量变为全局变量。
========================================================================================
无参方法声明实现及调用
@interface:Car: NSObject
{
int lunzi;
int speed;
NSString *pp;
}
//行为,车跑的方法
-(void)run; //定义了一个无参无返回值的方法
-(void)stop;
@end
@implementation Car
//方法具体的实现
-(void)run{
NSLog(@"车跑在乡间的大道上");
}
-(void)stop{
NSLog(@"咯吱,车停了!");
}
@end
------------------------------------------------------------------------------------------
方法的调用
使用对象调用方法就是OC中的消息机制
OC语言中蚕蛹特定的语言调用类或者实例(对象)的方法称为发送消息或方法调用
OC中方法的调用有两种:
1. [类名或者对象名 方法名];
如: [car run]; //向car对象发送一条run方法的消息
--------------------------------------------------------------------------------------
OC中的方法分为:对象方法和类方法
对象方法:
1.对象方法以 - 开头如 -(void)xx;
2.对象方法只能由对象来调用
3.对象方法中可以访问当前对象的成员变量
4.调用格式 [对象名 对象方法名]
类方法:
1.类方法以 + 开头,如 +(void)put;
2.类方法只能由类来调用
3.类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成 员变量。
4.调用格式:[类名 类方法名];
==========================================================================================
有参数的方法的定义和实现
有参方法声明实现及调用
声明,例:
-(double)sumOfNum1:(double)num1 andNum2:(double)num2;
即:
-(返回值类型)方法名1:(参数类型)参数名; //有一个参数的方法
-(返回值类型)方法名1:(参数类型)参数名(空格)and:(参数类型2)参数名2;
//有两个参数的方法,此处的方法名为 sum: and:(死记!冒号是方法名的一部分!!!! )