当前位置:编程学习 > wap >>

object-c基础 关于 @protected

Fraction.h  

#import  
  
static int t=0;  
@inte易做图ce Fraction: NSObject{  
          int numerator;//分子  
          @public int denominator;//分母  

}  
-(void) setNumerator: (int) numerator;//numerator 的setter 方法  
-(void) setDenominator: (int) denominator;//denominator 的setter 方法  

-(void) setNumerator: (int) numerator andDenominator: (int) denominator;  
//一个同时设置两个成员变量的快捷方法  
-(int) numerator;//numerator 的getter 方法  
-(int) denominator;//denominator 的getter 方法  

-(void) print;  
+(void) t;  
@end  



--------------------------------------------------------------------------------------------

#import \"Fraction.h\"  
int main(int argc,const char *argv[]){  
        Fraction *frac=[[Fraction alloc] init];  
        [frac setNumerator: 3 andDenominator: 5];  
        printf(\"The denominator of Fraction is %d\\n\",frac->denominator);  ///   第三行
        [frac release];  
        return 0;  
}  

第三行在 C  的 printf()函数中使用了对象->成员变量的语法访问实例的变量,但一般我 
     们不推荐这么做,而是使用 getter 方法。这里你不能访问 numerator变量,因为它是 
   @protected  的,只能本类、子类直接访问。  

问 “这里你不能访问 numerator变量,因为它是 @protected  的,只能本类、子类直接访问。  ” 是什么意思???
   不能使用frac->numerator来访问嘛?为什么可以frac->denominator?我试了 可以用frac->numerator来访问 --------------------编程问答-------------------- denominator是public
另外,numerator前面也没有加@protected。默认public --------------------编程问答-------------------- 为什么可以frac->denominator? denominator是public
不能使用frac->numerator来访问嘛?因为它是@protected的,因为默认是@protected的,只能本类子类直接问。
你可以参考博客http://blog.csdn.net/kindazrael/article/details/8062784

至于你 你试了可以用frac->numerator来访问
没用过这种写法不知道frac->numerator会不会调用下面的getter方法
-(int) numerator;//numerator 的getter 方法   
你可以把这个方法注释掉再试
--------------------编程问答-------------------- 别把OOP的思想用在OBJC上,非常的不好用
补充:移动开发 ,  iPhone
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,