03. 实例方法和实例变量

来源:互联网 发布:软件打包 编辑:程序博客网 时间:2024/06/05 21:02

实例变量(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 0
原创粉丝点击