• iOS 成员变量的作用范围


    /*
      成员变量的作用范围:
      @public:在任何地方都能直接访问对象的成员变量
      @private:只能在当前类的对象方法中直接访问,如果子类要访问需要调用父类的get/set方法
      @protected:可以在当前类及其子类对象方法中直接访问(系统默认下是用它来修饰的)
      @package:在同一个包下就可以直接访问,比如说在同一个框架
    
    注意:
        无论父类是在@interface还是@implementation声明的成员变量子类都能拥有;但是子类能不能直接通过变量名来访问父类中定义的成员变量是需要看父类中定义的成员变量是由什么修饰符来修饰的。
     
    默认:在@implementation中成员变量的修饰符为@private,
         在@interface中成员变量的修饰符@protected
    
     */
    
    
    #import <Foundation/Foundation.h>
    @interface Person : NSObject
    {
        @public
        int _no;            // 学号
        
        @private
        int _age;           // 年龄
        
        @protected
        NSString *_name;    // 姓名
        
    }
    
    // 由@pirvate修饰的成员变量,子类对象只能通过get/set来访问
    - (void)setAge:(int)age;
    - (int)age;
    
    @end
    
    
    
    /********************************在mian方法中*******************************/
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    #import "Student.h"
    int main(int argc, const char * argv[])
    {
        
        Person *person = [Person new];
        // 在Person.h文件中no是@public修饰的可以直接访问
        person->_no = 10;
        NSLog(@"%d",person->_no); // 打印是10
        
        // Student类继承了父类Person类中的所有成员变量和方法,但是子类不能直接访问父类中由@private修饰的成员变量
        Student *stu = [Student new];
        [stu setAge:1000];
        NSLog(@"%d",[stu age]);
        
        return 0;
    }
  • 相关阅读:
    shaderlab
    Unity
    Lua-闭包
    Unity- 小“东西”
    3.神经网络的保存、神经网络提取的2 ways
    2.搭建pytorch神经网络的常用两种方式
    搭建pytorch神经网络的常用两种方式
    1.建立第一个神经网络-关系拟合 (回归)
    python的编码解码问题
    github的搜素小技巧
  • 原文地址:https://www.cnblogs.com/QM80/p/3575605.html
Copyright © 2020-2023  润新知