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;}
- 03. 实例方法和实例变量
- 实例变量和类变量、类方法和实例方法
- iOS方法和实例变量
- python中的实例方法、静态变量,静态方法、类方法、类变量和实例变量
- OC之实例变量可见度和方法
- OC2_实例变量可见度和方法
- OC02 实例变量可见度和方法-1
- 静态变量、常量、方法和实例变量、方法
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- PYTHON中的实例方法、静态方法、类方法、类变量和实例变量浅析
- QQ for linux 腾讯值得深思
- 牛津词典应用程序/ 网址
- ora_dba sysdba & dba的辨析
- Codeforces Round #238 (Div. 2)(位运算)
- 远程桌面带入声音
- 03. 实例方法和实例变量
- MySQL数据库中文乱码的问题
- 多线程与异步调用
- Mondrian中聚合表的应用
- 郭天祥
- 交叉编译支持多线程的Android版X264库
- 关于二叉树
- linux 系统配置2个IP
- 通过Load table命令将数据文件加载到Sybase IQ数据库里面的Python脚本