/**
  点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,
  编译器会自动展开成相应的方法。切记点语法的本质是转换成相应的set和get方法,
  如果没有set和get方法,则不能使用点语法。
 
 点语法本质 就是set或者get方法.
 1.遇见 s.age = 10;形式,会自动展开为:[s setAge:10];
 2.遇见 int a = s.age;形式,会自动展开为:int a = [s age];
 
 点语法注意事项:
 1.用在set方法中:
 - (void)setAge:(int)age
 {
   _age = age;
   self->_age = age;
   self.age = age;// 死循环会展开为:[self setAge:age];
 }
 2.在get方法中:
 - (int)age
 {
   return _age;
   return self->_age;
   return self.age;// 死循环会展开为:[self age];
 }
 
 注意点:什么时候会生成set方法什么时候会生成get方法?
 如果有赋值运算符,生成set方法,否则,生成get方法.
 
 3)OC点语法的本质是方法调用,不是直接访问成员变量。至于这个点语法代表的是get方法还是 set方法,那就取决于你是取值还是设值(也可以理解为点语法是在“=”的左侧还是右侧。左侧:如stu.age=....这就是调用set方法,右侧 ... = stu.age这就是调用get方法),取值就是get方法,设值就是set方法。
 
 */
#import <Foundation/Foundation.h>
#import "Student.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
       
        Student *s = [Student new];
        
//        [s setAge11:10];
        s.age11 = 10;//跟- (void)setAge11:(int)age的setAge11匹配

//        int aAge = [s age];
        int aAge = s.age;
        
        NSLog(@"%d",aAge);
        
    }
    return 0;
}