//
// Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
@public
int _age;
@protected
double _height;
@private
NSString *_name;
@package
double _weight;
}
// 如果只有方法的实现, 没有方法的声明, 那么该方法就是私有方法
// 在OC中没有真正的私有方法, 因为OC是消息机制
//- (void)test;
@end
//
// Person.m
#import "Person.h"
@implementation Person
{
// 实例变量(成员变量)既可以在@interface中定义, 也可以在@implementation中定义
// 写在@implementation中的成员变量, 默认就是私有的成员变量, 并且和利用@private修饰的不太一样, 在@implementation中定义的成员变量在其它类中无法查看, 也无法访问
// 在@implementation中定义的私有变量只能在本类中访问(私有变量:private修饰,.m文件中写)
double _score;
}
- (void)test
{
NSLog(@"score = %f", _score);
}
@end
//
// main.m
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
Person *p = [Person new];
// 无论使用什么成语变量修饰符修饰成员变量, 我们都可以在其它类中看到这个变量
// 只不过有得修饰符修饰的变量我们不能操作而已
// p->_age;
// p->_height;
// p->_name;
NSLog(@"%f",p->_weight);
// [p test];
/*
id pp = [Person new];
[pp test];
[p performSelector:@selector(test)];
*/
return 0;
}