本帖最后由 安若曦 于 2015-9-11 14:51 编辑
1、实例变量修饰符的介绍
- #import <Foundation/Foundation.h>
- @interface Person : NSObject
- {
- @public //公开的,在任何地方 通过实例对象都能访问
- int _age;
-
- @private //私有的 只能在当前类中使用
- NSString *_name;
-
- @protected //受保护类型 只能在当前类和子类中访问
- float _weight;
- }
- -(void)run;
- @end
- #import "Person.h"
- @implementation Person
- -(void)run{
- NSLog(@"_weight = %.2f",_weight);
- }
- @end
复制代码- #import <Foundation/Foundation.h>
- #import "Person.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
-
- Person *p = [Person new];
- p->_age = 12;
- //p->_weight = 2.3f;
-
- }
- return 0;
- }
复制代码
2、实例变量修饰符对于子类的影响
- #import "Animal.h"
- @interface Dog : Animal
- -(void)run;
- @end
- #import "Dog.h"
- @implementation Dog
- -(void)run{
- //@public 类型的变量,在子类中可以正常的访问和使用
- NSLog(@"public _age = %d",_age);
-
- //@protected 类型的变量,在子类中使用,不能在其他类中使用
- _weight += 10;
- NSLog(@"@protected _weight = %.2f",_weight);
-
- //@private 类型的变量
- //面试题:
- //@private 类型的变量 能否被子类继承?
- //子类可以继承父类的实例变量和方法
- //但是不是所有的都可以访问
-
- //@private 类型的变量 能否被子类访问?
- //不能访问
- //NSLog(@"@private _tuiNum = %d",_tuiNum); //此处是能继承过来,但是不能访问
- }
- @end
- #import <Foundation/Foundation.h>
- #import "Dog.h"
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- Dog *d = [Dog new];
- d->_age = 12;
- [d run];
-
- }
- return 0;
- }
复制代码
|
|