实例化对象:Computer *computer = [[Computer alloc]init];
alloc:创建实例对象的方法,开辟内存空间保存对象的数据
init:初始化方法,完成对象的初始化,比如对属性赋初值
OC中的方法:
- (NSString *)setName:(NSString *)namewithAge:(int)age;
“-”:方法的类型,”-” 实例方法 “+” 类方法
“NSString *” 方法的返回值
“setName:” 方法的名称(包含冒号)
“(NSString *)name” 方法的参数
“withAge:” 方法的名称(包含冒号)
“(int)age” 方法的参数
代码规范:
l 类名:每个单词首字母大写,例如:Student
l 变量:首字母小写后面的单词首字母大写(驼峰标示) studentName
l 方法名称:和变量名称一样(驼峰标示)
l 字段、实例变量使用下划线开头
l 每个方法至少有一行间隔
.h文件用于声明属性和方法 .m文件用于实现方法
“+”类方法 “-”实例方法
类方法属于类本身,不属于具体的实例对象。使用”+”表示,调用的时候直接使用类名调用。
实例方法属于具体的实例对象,使用”-”表示,调用的时候需要实例化的具体对象名调用。
实例方法(对象方法)中调用类方法(静态方法) [类名 类方法名]
实例方法(对象方法)中调用实例方法(对象方法) [self 对象方法名]
类方法(静态方法)中调用实例方法(对象方法) 实例化对象[新对象 对象方法名]
类方法(静态方法)中调用类方法(静态方法) [self 类方法名]
重写父类方法:直接书写普通方法,只是方法名要与父类方法名相同。然后再写事件处理函数。
小技巧:快速敲出代码,如果方法在.h中声明了,敲出方法返回类型,在敲出方法名,便有提示。如果是重写父类方法,先直接敲方法名,就可看到提示。
代码例:
Car*myCar = [[Car alloc] init];
myCar.brand= @”奥迪”; 利用属性的set方法赋值
myCar->_output= 98.00; 利用->强制性赋值,但这个属性必须公开才可行
get/set方法定义
- (void)setName:(NSString*)name; 在.h文件中声明set方法
- (NSString*)name; 在.h文件中声明get方法
- (void)setName:(NSString *)name{ 在.m文件中实现set方法
_name = name;
}
- (NSString *)name{ 在.m文件中声明get方法
return _name;
}
set方法和get方法有两种方法调用,使用[]和”.”语法
[stu setName:@”小倩”];
stu.name= @”小倩”;
self、super关键字
OC中的self关键字代表着当前方法的调用,也就是说你要在当前类内部调用自己的方法时就用self关键字。
super关键字:OC中的super关键字表示当前类/对象的父类,在子类中使用其关键字调用父类的方法
注意点: 1、在实例方法中,self代表着”当前对象”
2、在类方法中,self代表着”当前类”
自定义初始化方法
OC提供的init方法没有提供参数的,只能对属性设置固定值。
自定义初始化方法必须以init开头,并且后面的单词首字母大写。
instancetype是返回值类型,表示当前的对象。
代码例如:
-(instancetype)initName:(NSString *)name{
self = [super init]; //先对父类进行初始化,因为每个OC的类都有自己的父类,首先保证父类初始化成功
if (self) { //判断self是否为nil(空),不为nil才对当前对象属性赋值
_name = name; //使用传入的值给属性赋值
}
return self; //返回当前实例对象
}
覆写description方法,description方法默认返回的是对象的地址