在类中成员变量的作用域类型

作用域类型一共有四种

1,@public 在任何地方都能直接通过成员变量名直接访问成员变量。(不推荐使用)

2,@private 只能在当前类的对象方法中直接通过成员变量名访问成员变量,在其他地方需要通过geter和seter方法访问。(@implementation中被声明成员变量的默认类型)

3,@protected 只能在当前类及其子类的对象方法中直接通过成员变量名访问成员变量,在其他地方需要通过geter和seter方法访问。(@interface中被声明成员变量的默认类型)

4,@package 只要在同一个框架中,就能直接通过成员变量名访问对象的成员变量。(很少使用,主要用在框架编写)

注意点:

1,同一类中@interface和@implementation中声明的成员变量不能同名。

2,一般不再@implementation中声明成员变量。

3,在.m文件中的@implementation声明的成员变量只能是@private类型,就算在前面加上其他作用域类型也没有用。如果在其他文件中情况有所不同。

(自己总结的,如果有错误希望指出,谢谢)

时间: 2024-10-09 21:54:48

在类中成员变量的作用域类型的相关文章

C++类中成员变量的初始化总结

1. 普通的变量:      一般不考虑啥效率的情况下 可以在构造函数中进行赋值.考虑一下效率的可以再构造函数的初始化列表中进行. 1 class CA  2 {  3 public:  4      int data;  5 public:  6      CA();  7 };  8     9 CA::CA():data(0) //……#1……初始化列表方式 10 { 11     //data = 0;//……#1……赋值方式 12 }; 2.static 静态变量:       sta

java类中成员变量初始化后存放在堆内存中还是栈内存中?

答案是堆内存. 之前明明看过java类初始化过程的, 但一下子看到这样的题目,还是懵了. 百度后,那些帖子的回复各有各说, 脑袋都看得要塞住了,还是看书求证吧. 李刚的<疯狂Java>第128页开始,有一个类从初始化开始, 在内存发生什么变化的详细过程,这里简单记录一下. class Person{     String name;     static int eyeNum; } 上面这个Person类,有成员变量name和静态成员变量eyeNum了, 当执行下面语句: Person p1 

黑马程序员-OC中的点语法,成员变量的作用域

点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; // 如果点语法是进行了赋值操作,那么就相当于调用了setter方法: [p.age]; // 这样不赋值相当于调用了getter: 注意点: 尽量不要在setter或getter中调用点语法,容易引发死循环:死循环是由于递归调用引发的: // 在setter调用点语法 - (void)setAge:(in

4Java中成员变量与局部变量

成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用. 局部变量:包括形参,方法局部变量,代码块局部变量,存在于方法的参数列表和方法定义中以及代码块中. 1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及 static修饰:两者都可以定义成final型. 2.成员变量存储在堆,局部变量存储在栈.局部变量的作用域仅限于定义它的方法,在该方法的外部无法

Objective-C基础学习笔记(六)-property作用-构造方法-OC成员变量的作用域

一. 点语法 点语法的本质是方法调用,并不是访问成员变量,编译器看到点语法有两种处理 1 .是赋值,赋值的就是展开为set方法 2. 不是赋值:展开为set方法 使用示例: Person类的声明: 点语法的测试: 二. OC成员变量的作用域 @public :任何地方访问 @private :只能在当前类的对象方法中直接访问 @protected :能在当前类和子类中直接访问(默认) @package :只要处于同一个框架中就能直接访问对象成员变量   三. @property 与 @synth

Java类的成员变量和局部变量

在Java中,成员变量和局部变量存在较大的差异性.首先,我们来看一下变量的分类图: 成员变量 成员变量被分为:类属性和实例属性. 类属性:定义一个属性时,不使用static修饰的就是实例属性, 实例属性:定义一个属性时,使用static修饰的是类属性. 类属性从这个类的准备阶段起开始存在,直到系统完全销毁这个类,类属性的作用域与这个类的生存范围相同: 而实例属性则从这个类的实例被创建开始存在,直到系统完全销毁整个实例,实例属性的作用域与对应实例的生存范围相同. PS:一个类在使用之前,要经过类加

fielderror里的fieldName代表的是jsp里的fieldName还是Action类的成员变量?(待解答)

1.值栈的Action对象中会有一个fielderror属性,代表着字段错误. fielderror是Map<String,List<String>>类型 例如下面的值栈里可看到,fielderror属性里有Map, 键:ppt 值:[^The file is too large to be uploaded:ppt "FuzzyOpinionFigure1.fig" "upload_4fd387d7_8e03_479e_bf04_08e69368e3

类的成员变量和属性描述

0x 01 .类的属性 property 类的属性即是通过@property声明的属性.属性是类型为objc_property的一个结构体.该结构体封装了属性的信息 比如属性的名字,属性的类型,属性的可读写,非原子/原子属性等. 1).获取一个类的属性列表方法:OBJC_EXPORT objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)入参是一个类的class对象,一个是用于统计属性数量的整形数的地址

【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定义 (1) 接口部分定义格式 接口部分定义格式 : @interface className : superClassName { type _variableName; ... ... } - (type) methodName : type parameterName; @end -- 接口定义