OC对象和属性

对象和属性

  1. 类和对象
    世间一切东西都可以当作对象.
    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……];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值