03. 实例方法和实例变量

实例变量(InstanceVariable)    

    (一个对象会有自己独特的数据和别的对象不同,这些数据会保存在一些特殊的变量值中,这种变量叫实例变量。类的每个实例(对象)都有一份。)

    用一个类,创建出了一个对象,那我们说这个对象就是此类的一个实例。一个类可以有很多的实例。每一个实例都拥有一份和其他实例不同的数据,这些数据保存在实例变量中。

    实例变量可以定义在interface部分,也可以定义在implementation部分。

创建一个PropertyAndInstanceVariable项目,创建TRFraction类:

#import <Foundation/Foundation.h>


@interface TRFraction : NSObject    //分数类

{

@public        //不保护 ,但实例变量不应该公开,应该用@protected,默认保护,protected自己和子类可以访问

       //定义实例变量

        int n;    //分子

        int d;    //分母

}

- (void) show;

@end


@implementation TRFraction

-(void) show

{

        NSLog(@"%d/%d", n, d);    //实例变量可直接访问,不需要写self,或self->n

}


//main.m中:

 void test1()

{

        TRFraction *f1 = [TRFraction alloc];

        f1->n = 1;

        f1->d = 2;

        [f1 show];

        TRFraction *f2 = [TRFraction alloc];

        f2->n = 2;

        f2->d = 3;

        [f2 show];

}

int main(int argv, const char* argc)

{

        @autoreleasepool{

                test1();

        }

}

//
//  Student.h
//  day02-2
//
//

#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    //实例变量 保存值的
    int _age;
    char _sex;
    float _salary;
}
//給实例变量赋值
//setter 属性名:int age
-(void)setAge:(int)age; //此age为参数
-(int)age;
-(void)setSex:(char)sex;
-(char)sex;
-(void)setSalary:(float)salary;
-(float)salary;
@end


//
//  Student.m
//  day02-2
//
//

#import "Student.h"

@implementation Student

{
    int _level; //声明了一个私有的实例变量(放在.m中的实例变量是私有的)
}
-(void)getLevel{  //声明了一个私有的实例方法(放在.m中的实例变量是私有的)
    NSLog(@"getLevel");
}

-(void)setAge:(int)age{
    _age = age;  //属性和实例变量的关系
    NSLog(@"调用了setter方法");
}

-(int)age{
    return _age;
}

-(void)setSex:(char)sex{
    _sex = sex;
}

-(char)sex{
    return _sex;
}

-(void)setSalary:(float)salary{
    _salary = salary;
}

-(float)salary{
    return _salary;
}

@end


//
//  main.m
//  day02-2
//
//

#import <Foundation/Foundation.h>
#import "Student.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        
        Student* stu = [Student alloc];
        //[stu setAge:20];
        //NSLog(@"age:%d", [stu getAge]);
        //[stu setSex:'M'];
        //NSLog(@"sex:%c", [stu getSex]);
        //[stu setSalary:6000.1];
        //NSLog(@"salary:%.2f", [stu getSalary]);
        
        stu.age = 18; //自动调用setter方法
        NSLog(@"age:%d", stu.age); //自动调用getter方法
        
        stu.sex = 'M'; //自动调用setter方法
        int sex = stu.sex; //自动调用getter方法
        NSLog(@"sex:%c", sex);
        
        stu.salary = 12000.5; //自动调用setter方法
        NSLog(@"salary:%.2f", stu.salary); //自动调用getter方法
        
    }
    return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值