对象和属性
类和对象
世间一切东西都可以当作对象.
C中的数据类型有:int,float,double,char等等.
类是对象的类型.封装:对象中包括属性和方法,用属性和方法共同体现对象的特性,称为封装.
OC的基本数据类型有:NSInteger(整型),NSUInteger(无符号整型),CGFloat(浮点型),char(字符型),NSString(字符串),NSArray(数组).
书写格式:类名首字母大写,方法名首字母小写,其他单词的首字母大写,如Student(类),getCompanyAddress(方法).OC文件中分为两部分:@interface,@implementation
创建类和方法:
@interface Student :NSObject
{
@public //表示下面的属性是公共的,没有则会出错
NSString *name;
NSInteger age;
}
-(void)sayHello; //-表示实例方法#import “Student.h”//引用Student类头文件
@implementation Student
{
-(void)sayHello
{
NSLog(@”Hello,My name is %@”,name);
}
}//在@implementation中可以定义没有在@interface中定义的方法,但只能在@implementation中使用.
创建对象和使用,方法的使用:
//main.m
#import < Foundation/Foundation.h>
#import “Student.h”
int main(int argc,const char *argv[])
{
@autoreleasepool{
Student *stu=[[Student alloc]init];//创建对象
//Student *stu=[Student new];
stu->name=@”刘三姐”;//属性赋值
[stu sayHello];//方法调用
}
}类方法的定义和使用:
+(void)类方法名{
[self 类方法名];//类方法中调用类方法
类名 *a=….;
[a 实例方法];//类方法中创建对象访问实例方法
}
[类名 类方法];//类方法外使用类方法对象初始化:
1.直接初始化:如上面的例子
2.重写init方法
-(id)init
{
self=[super init];
if(self)
name=@”刘三姐”;
return self;
}
3.设置器和访问器
很多情况下,属性的类型都不是public,而是protected(可在类和子类中使用属性)或private(只能在类中使用属性),这样就不能用上面的方法对属性进行初始化了.注释@public(默认为protected),添加设置器和访问器.
在@interface中添加
-(void)setName:(NSString*)newName;
-(NSString*)getName;
在@implementation中添加
-(void)setName:(NSString*)newName
{
name=newName;
}
-(NSString*)getName
{
return name;
}
在main.m中使用
Student *stu=[Student new];
[stu setName:@”刘三姐’];//setter
NSString *str=[stu getName];//getter
NSLog(@”%@”,str);//间接对name赋值并使用
设置器和访问器的改进:
在@interface中添加@property (nonatomic,copy) NSString *name;//属性的定义可省略了,setter和getter自动生成,不用手动写.如果在@implementation中使用属性,则需要加下划线:_name
4.便利初始化函数
形式:
声明:
@interface
-(id)initWith…….(自己命名):(NSString *)aName andAge:(NSInteger)aAge//包含两个属性
使用:
@implementation
-(id)initWith…….:(NSString *)aName andAge:(NSInteger)aAge
{
self=[super init];
if(self)
{
name=aName;
}
//if(…)…
return self;
}
main.h
Student *stu=[[Student alloc]initWith……];