OC 点语法 和 成员变量作用域
2015-04-14 17:30
453 查看
1 点语法
OC中点语法是对象成员set方法和get方法的一种简写形式. 使用更方便,更直观// // Person.h // 点语法 // // Created by LiuWei on 15/4/14. // Copyright (c) 2015年 LiuWei. All rights reserved. // #import <Foundation/Foundation.h> @interface Person : NSObject { int _age; } - (void)setAge: (int)age; - (int)age; @end
// // Person.m // 点语法 // // Created by LiuWei on 15/4/14. // Copyright (c) 2015年 LiuWei. All rights reserved. // #import "Person.h" @implementation Person - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } @end
// // main.m // 点语法 // // Created by LiuWei on 15/4/14. // Copyright (c) 2015年 LiuWei. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" int main(int argc, const char * argv[]) { Person *p = [Person new]; p.age = 20; // 这段代码相当于 [p setAge:20]; NSLog(@"p.age = %i", p.age); // p.age 相当于 [p age]; return 0; }
2 成员变量作用域
成员变量作用域修饰符的作用@public 成员变量在任何地方都
4000
可以通过对象名或对象方法进行访问
@private 成员变量只能在当前类对象方法中访问, 子类的对象方法中无法访问
@protected 成员变量在当前类及子类对象方法中可以访问, 外部不能直接访问
// // Person.h // 成员变量访问作用域 // // Created by LiuWei on 15/4/14. // Copyright (c) 2015年 LiuWei. All rights reserved. // #import <Foundation/Foundation.h> @interface Person : NSObject { @public // 任何地方都可以对成员变量进行访问 int _age; // 年龄 @private // 只能在当前类的对象方法中使用 NSString *_name; // 姓名 @protected // 只能在本类及子类对象方法中使用,不能被外部直接调用, double _weight; // 体重 // 如果没有加任何作用域修饰符 默认作用域为 @protected double _heigh; // 身高 } // _age的set和get方法 - (void)setAge: (int)age; - (int)age; // _name的set和get方法 - (void)setName: (NSString*)name; - (NSString*)name; // _weight的set和get方法 - (void)setWeight: (double)weight; - (double)weight; // _heigh的set和get方法 - (void)setHeigh: (double)heigh; - (double)heigh; @end
// // Person.m // 成员变量访问作用域 // // Created by LiuWei on 15/4/14. // Copyright (c) 2015年 LiuWei. All rights reserved. // #import "Person.h" @implementation Person - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } - (void)setName:(NSString *)name { _name = name; } - (NSString *)name { return _name; } - (void)setWeight:(double)weight { _weight = weight; } - (double)weight { return _weight; } - (void)setHeigh:(double)heigh { _heigh = heigh; } - (double)heigh { return _heigh; } @end
// // Student.h // 成员变量访问作用域 // // Created by LiuWei on 15/4/14. // Copyright (c) 2015年 LiuWei. All rights reserved. // #import "Person.h" @interface Student : Person - (void)useName; @end
// // Student.m // 成员变量访问作用域 // // Created by LiuWei on 15/4/14. // Copyright (c) 2015年 LiuWei. All rights reserved. // #import "Student.h" @implementation Student - (void)useName { // _name = @"huahua"; _name 在父类中被声明为@private 所以不能在子类对象方法中使用 NSLog(@"_name 在父类中被声明为@private 所以不能在子类对象方法中使用"); NSLog(@"_weight = %f _heigh = %f", _weight, _heigh); // _weight _heigh都是@protected作用域所以可以在子类方法中调用 } @end
// // main.m // 成员变量访问作用域 // // Created by LiuWei on 15/4/14. // Copyright (c) 2015年 LiuWei. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" #import "Student.h" int main(int argc, const char * argv[]) { Person *p = [Person new]; p.age = 20; // 这段代码相当于 [p setAge:20]; p->_age = 29; // _age成员变量可以在main中直接访问 p.name = @"无名"; p.weight = 55.3; p.heigh = 1.78; Student *s = [Student new]; s.age = 22; s->_age = 21; // 父类中成员变量作用域属性设置为@public, 在子类中同样也是@public s.name = @"小李"; // _name为@private 子类调用父类的setName方法,所以可以访问_name成员变量 s.weight = 48.9; s.heigh = 1.81; [s useName]; return 0; }
父类方法,外部方法,子类方法, 可访问成员变量关系示意图
相关文章推荐
- OC之点语法、成员变量作用域、@property和@synthesize
- 「OC」点语法和成员变量的作用域
- OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程
- OC基础—点语法、成员变量的作用域
- OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程
- OC核心语法之NSString、点语法、成员变量作用域、@property和@synthesize
- 黑马视频学习笔记-OC-点语法、成员变量的作用域
- 黑马程序员——OC语言------NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- 黑马程序员_iOS开发之OC之面向对象之多文件操作、点语法、成员变量的作用域和关键字@property与@synthesize
- OC中的点语法,成员变量的作用域
- 【Objective-C】09-OC中的点语法和成员变量的作用域
- OC_NSString,点语法,成员变量作用域,@property和@synthesize,id笔记
- 黑马程序员------OC基础-----点语法、id、构造方法、Category、成员变量作用域
- 「OC」点语法和成员变量的作用域
- 黑马程序员—OC点语法和成员变量作用域
- 黑马程序员——【OC】点语法以及成员变量的作用域
- 黑马程序员——OC基础语法—点语法和成员变量作用域
- 黑马程序员——OC基础---核心语法(点语法,成员变量的作用域,@property和@synthesize)
- OC——多态、NSString的基本使用、点语法、成员变量作用域
- 黑马程序员——OC语言学习——Xcode开发初始化、点语法、成员变量作用域、关键字@property和@synthesize