------- android培训、java培训、期待与您交流! ----------
类:一类事物共同特征和行为的抽象
车类
共同特征:颜色,速度,轮子
行为: 跑,停止
对象:类的具体的个体
东风(车类的对象)
解放大卡车(车类的对象)
2.类的定义
类的定义分为两部分
1)类的声明(规定当前类的类名,属性,行为)
@interface 类名:父类名
{
//定义类的属性
}
//类的行为
@end
2)类的实现(实现行为
@implementation 类名
、//行为的具体实现
@end
#import <Foundation/Foundation.h>
//车的类的声明 车的图纸(类)
@interface Car : NSObject
{
//类的属性
@public
int lunzi; //车的轮子
// char *clolr;
NSString *color; //车的颜色
int speed; //车的速度
}
//类的行为
//车跑得方法
-(void)run; //定义了一个无参无返回值
-(void)stop;
@end
@implementation Car
//行为的具体实现
//方法的具体实现
-(void)run{
NSLog(@"车跑在乡间的大道上");
}
-(void)stop{
NSLog(@"车停了");
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建Car类型的对象,实质还是指针
Car *car1= [Car new];
//调用方法
[car1 run];
//调用stop方法
//向car 对象发送stop消息
[car1 stop];
car1->lunzi = 3;
car1->color = @"蓝色";
car1->speed = 113;
NSLog(@"%d个轮子,%d的速度 %@的颜色",car1->lunzi,car1->speed,car1->color);
}
return 0;
}
[Person new]做了3件事情
1)申请内存空间
2)给实例变量初始化
3)返回空间的首地址
new的时候申请的空间在内存的堆区(程序动态分配的内存空间)
当new的时候内存开始初始化:
如果实例变量是基本数据类型,此时给初始化为0
如果实例变量是OC字符串类型,初始化为null
实例变量保存在堆区,指针变量保存在栈区,对象方法保存在代码区
[car1 run]的原理
首先找car1对应的堆区的空间,然后找到_isa指针,再找到_isa指向的代码区的空间,然后到该空间中找方法
一个类可以创建多个对象
函数和对象方法的区别
对象方法:
-(void)run;
1、对象方法的实现只能卸载@implementation ……@end中,对象方法的声明只能写在@interface……@end中间
2、对象方法都以 - 号开头,类方法都以 + 号开头
3、对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用
4、函数属于整个文件,可以写在文件中的任何位置,包括@important ……@end 中,但写在@interface……@end会无法识别
5、对象方法归类/对象所有
函数
void run(){}
1、所有的函数都是平行的
2、函数不存在隶属关系
3、使用的时候可以直接调用
4、不可以访问对象中的成员变量
NSString类介绍及用法
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建一个字符串
NSString *s = @"banzhang qie d";
//输出一个字符串
NSLog(@"%@",s);
NSString *s1 = [NSString new];
//格式化创建字符串(按照指定的格式创建字符串)
}
return 0;
}
NSString字符串长度计算方法
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *s1 = @"jian qilai";
NSUInteger len = [s1 length];
NSLog(@"len = %ld",len);
NSString *s2 = @"国庆阅兵";
len = [s2 length];
NSLog(@"len = %ld",len);
//中英文混和
NSString *s3 = @"班长abc";
len = [s3 length];
NSLog(@"len=%ld",len);
}
return 0;
}