OC成员变量和点语法 的访问

一.使用 _成员变量名对成员变量进行访问

在方法中,可以使用 "_成员变量名" 对本对象中的成员变量进行访问。

注意点:

1>成员变量必须是本对象中的成员变量

2>如果成员变量是从父类中继承而来,而且父类中的此成员变量被设置为@private时,不可以用这种方式。

3>可以与&取址符搭配使用

二. 使用get set方法对成员变量进行访问

既写一个专门用来赋值,取值的方法来对成员变量进行访问

注意点:

1>set get方法必须是对象方法,用对象来调用,对此对象内部的成员变量进行访问。 必须有对象,或者拿到对象,才能使用get,set

2>set 是赋值方法,get是取值方法。get方法有返回值,调用后会返回此成员的具体值,因此不可以与&取址符搭配使用 。

3> 原则上只要有对象,或者拿到了对象就可以使用get set方法,但是如果类中只有set,get的实现,没有声明,那么get,set此时是本类的私有方法,只可在本类中使用,不可在类外部使用,甚至子类都不可使用。

三.使用.语法

.语法是在预编译时调用set,get方法,因此本质是set,get方法

注意点:

1>要使用点语法要保证有对象,或者拿到了对象

2>要使用.语法必须确保有成员变量的set,get方法

3>点语法不可与&取址符搭配使用,原因同set,get

四.使用指针

既使用”对象名->_成员名“这种指针的方式对成员变量进行赋值

注意点:

1>当成员是@public时,可以在外部直接使用指针方式对成员进行访问

2>当成员是@protected时,不可在类的外部使用,可以在类中,子类中使用,也可以在其他类中使用,但是前提是必须拿到对象。

3>当成员是@private时,不可在子类中使用此方法,只可使用get,set方法对其进行访问。

self,super,在编程中可以灵活使用,搭配指针方法,set,get方法。

时间: 2024-10-12 20:43:34

OC成员变量和点语法 的访问的相关文章

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

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

iOS OC 成员变量是强引用还是弱引用

成员变量,本例中的是实例成员变量,是作用于整个类对象内的.从生命周期来看,它比局部变量要长一些,但它默认是私有的,其他对象是无法访问到的. 比如你一个变量放在@interface 中,你申请一个实体时,变量存活周期跟你实体一样. 因为成员变量的作用域是整个类对象内,所以在ARC环境下OC里面的成员变量应该是 strong属性的. 链接:http://www.zhihu.com/question/23347971/answer/24332408 例子: 头文件: @interface ViewCo

[Java] 继承中,父类被覆盖的成员变量、方法的可访问性

在 Java 的继承机制里,在子类内部,可以访问父类被覆盖的变量和方法:在子类外部,可以访问父类的被覆盖变量,但是不能访问父类的被覆盖方法. 父类中被覆盖的方法不能在外部被方法,这是出于封装的考虑. 例子: Super, 父类,拥有一个成员变量 x ,和成员方法 doSomething(). Point,继承 Super, 但覆盖了 Super 的 x 和 doSomething(),拥有自己的同名成员成员 x 和 doSomething(). StaticDemo1, 演示在继承中,在内部,可

JavaSE8基础 final修饰类的成员变量,其只可以被访问,不能被修改

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /* final 修饰类的成员变量. 这个变量可以被访问,但是不能被修改.因为这个变量相当于常量. */ class Son { public final int num = 1; } class Demo { public static void main(String[] agrs) { Son s =

访问权限PPP(public、private、protected、default)之成员变量、成员变量权限解析

首先,我们需要清楚一下方法是由哪些部分构成的: [权限修饰符列表][别的修饰符列表] 返回值类型 方法名(参数列表){   方法体:} 然后我们需要知道成员变量和成员方法访问有几种情况:1.当前包同一个类  2.当前包里面别的类  3.别的包里别的类  4.自己包继承关系的类  5.从别的包里有继承关系的类 第一步先创建一个别的类的代码,示例: package com.java; public class admin{ //成员变量的访问权限 public int i1 = 10; protec

张超超OC基础回顾02_成员变量(属性),局部变量,全局变量的区别

成员变量: 写在类声明的大括号中的变量, 我们称之为 成员变量(属性, 实例变量) 成员变量只能通过对象来访问 注意: 成员变量不能离开类, 离开类之后就不是成员变量 成员变量不能在定义的同时进行初始化 存储: 堆(当前对象对应的堆的存储空间中) 存储在堆中的数据, 不会被自动释放, 只能程序员手动释放 @interface Person : NSObject { int _age; NSString *_name; } @end  全局变量: 写在函数和大括号外部的变量, 我们称之为全局变量

访问权限系列一(public/private/protected/default):成员变量

通过两个程序包对自身或互相之间的访问,得到结果.(先编译Test_01,得到class文件,通过Test的集中访问情况) 如下Test.java中内容: package com.java; /* * 关于成员变量多种情况下的访问权限: * ------------------------------------------------------------------------------ * public private protected default * 1 同一个包,同一个类 可以

iOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系

类(class):具有相同属性和行为等同一类元素等总称,类是一个抽象的概念. 区分是类还是对象,看它能否继续被细分. 在OC中,类是表示对象类型的结构体,对象通过类来获取自身的各种信息.类由两个部分组成:*.h和*.m文件组成. *.m文件中 implemention部分是类的实现部分,内部包含类中的各种信息,包括各种实例方法或类方法. 类别( category):是为现有的类添加新方法的方式,通常以"类名称+类别名称"来命名. 类别中不能添加新的实例变量.但是可以在类别中添加属性.

OC-category 为什么不能添加成员变量

以下的答案是百度的,仅做记录而已: 1. 利用运行时实际上也不是添加成员变量.已编译的类的内存布局是不变的,Class就是一个结构体,里面的成员不能改变.但是通过运行时可以将一个对象或基础类型变成指定Class对象的一个关联对象,他们两者的内存布局是分开的,与成员变量不同. 2.关联的并不是在指定Class上,而是指定的对象上,概念上有一定差别.objc_setAssociatedObject()这个函数接收四个参数,第一个是需要关联的对象,第二个是索引的一个KEY,第三个是被关联对象,第四个是