在对类和对象有一定了解之后,我们进一步探讨实例变量的可见度等相关知识
实例变量的可见度分为三种情况:public(共有),protected(受保护的,默认),private(私有的),具体的不同和特点如下:
 
 
具体的使用示例如下:
 
 
编程时默认的可见度是@protectde,为什么不使用@public呢?
因为OC是面向对象编程,使用@public关键字,暴漏了类内部的细节,从而不符合面向对象语言的三大特性之一——封装
实例变量经过@protectde修饰之后,我们就不能在该类和其子类外操作,例如mian.m文件。那么我们如何才能在mian.m文件中设置person的_name,读取person的_name。
这就需要我们去添加两个方法即setter和getter方法
在OC里,为实例变量赋值的方法成为setter(设置器)
读取实例变量值的方法称为getter(访问器)
赋值(setter):通过方法传入参数,在类的内部实现实例变量的赋值
取值(getter):通过方法获取实例变量的值
OC里规定了setter和getter的书写格式
如果一个实例变量是int age;或者int_age;
setter的书写格式如下: - (void)setAge:(int)age;即set + 首字母大写的实例变量名(忽略下划线)
getter的书写格式如下: - (int)getAge;即返回值类型与变量类型一致,方法名与实例变量名相同(忽略下划线)
具体示例如下:
Person.h文件中:
 
 
Person.m文件中:
 
 
 
多参方法:
 
 
OC中的方法分为两种:类方法和实例方法
类方法:只能类使用,例如:+ (id) alloc 注:类方法中不能使用实例变量
实例方法:只能对象使用,例如:_(void)sayHi
类中不能出现同名方法
“ :”标识参数,不能省略。有冒号必须有参数
方法的使用
 
 
自定义初始化方法
h文件中:
 
m文件中:
 
#import
导入头文件,即:导入头文件中的内容到当前类。
#import“”导入自定义类。#import<>导入类库中的头文件
功能类似C语言中的#include,但是可以避免文件被重复导入
 

OC中实例变量可见度、setter、getter方法和自定义初始化方法的更多相关文章

  1. ruby中实例变量、类变量等等的区别和联系

    ruby的变量有局部变量,全局变量,实例变量,类变量,常量. 1.局部变量 局部变量以一个小写字母开头或下划线开头 局部变量有局部作用域限制(比如一个block内),它的作用域起始于声明处,结束于该声 ...

  2. C++中静态成员变量要在类外部再定义或初始化的原因

    C++中静态成员变量要在类外部再定义或初始化,否则会产生错误. class A { public: static int a; }; int A::a=0; 为什么要在类的外部进行定义的原因: 1. ...

  3. 【转】两道面试题,带你解析Java类加载机制(类初始化方法 和 对象初始化方法)

    本文转自 https://www.cnblogs.com/chanshuyi/p/the_java_class_load_mechamism.html 关键语句 我们只知道有一个构造方法,但实际上Ja ...

  4. 牛客网Java刷题知识点之字符流缓冲区、BufferedWriter、BufferedReader、BufferedReader-readLine方法原理、自定义MyBufferedReader-read方法、自定义MyBufferedReader-readLine方法

    不多说,直接上干货! 把提高效率的动作,封装成一个对象.即把缓冲区封装成一个对象. 就是在一个类里封装一个数组,能对流锁操作数据进行缓存. 什么是字符流缓冲区? 善于使用字符流缓冲区,减轻负担,提高下 ...

  5. OC基础:实例变量和成员变量的区别 分类: ios学习 OC 2015-06-14 17:59 16人阅读 评论(0) 收藏

    摘要:  Objective-C  引入了"实例变量"的概念,但同时, 也经常出现 "成员变量"的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢 ...

  6. OC中数组类NSArray的详解,常用属性和方法(一)

    数组是一个有序的集合,OC中的数组只能存储对象类型, 但是对于对象的类型没有限制. 通过下标访问数组元素,下标从0开始. NSA

  7. OC中成员变量的命名

    先前写C++ 的时候,命名成员变量一般都是用 m_veriableName:的方式,但是进到新项目组,用了OC以后,发现成员变量都是用 veriableName_的方式,最后的一个下划线表示是成员变量 ...

  8. C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法

    有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同.这些特殊的类型的成员变量包括: a.引用 b.常量 c.静态 d.静态常量(整型) e.静态常量(非整型) 常量和引 ...

  9. OC中属性及方法

    1.声明式属性    a.实例变量    b.声明属性        自动生成setter/getter方法        .h ->@property 属性类型 属性名;        .m ...

随机推荐

  1. Java基础——序列化

    Java的“对象序列化”能将一个实现了Serialiable接口(标记接口,没有任何方法)的对象转化为一组byte,这样日后要用到这个对象的时候,就能把这些byte数据恢复出来,并据此重新构建那个对象 ...

  2. Windows10系统如何安装Microsoft Visual Studio 2015及最小子数组和求解

    一.Windows10系统如何安装Microsoft Visual Studio 2015. 1.首先到Visual Studio官方网站(https://www.visualstudio.com/v ...

  3. 五、用户数据报传输(UDP)

    1.UDP常用的发送和接收函数 int recvfrom(int sockfd,void *buf,int len,unsigned int flags,struct sockaddr *from,i ...

  4. gulp.spriteSmith使用

    var gulp = require('gulp'); var spritesmith = require('gulp.spritesmith'); gulp.task('sprite', funct ...

  5. BackgroundWorker Threads and Supporting Cancel

    http://www.codeproject.com/Articles/20627/BackgroundWorker-Threads-and-Supporting-Cancel BackgroundW ...

  6. 再论App的安全性

    现代人早已脱离不了智能手机,几乎人手一机,常见人边走边滑,着实危险.大家用手机App购物,用网银App付费,用股票App下单炒股,太方便了所以成了家常便饭. 没错,就是因为太方便,所以大多只会留意好不 ...

  7. GUI异步编程之BackgroundWorker类

    GUI编程中,经常需要另建一个线程,在后台运行以完成某项工作,并不时地与界面主线程进行通信,以改变界面显示.BackgroundWorker类为此而生. BackgroundWorker类的主要成员: ...

  8. 深入PHP empty(),isset(),is_null()

    PHP empty(),isset(),is_null()的实例测试.   有关 PHP编程 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资 ...

  9. mysql查询语句(mysql学习笔记七)

    Sql语句 一般顺序GHOL : group by,having ,order by,limit     如果是分组,应该使用对分组字段进行排序的group by语法                 ...

  10. mysql基本数据类型(mysql学习笔记三)

    Mysql数据类型 小数: 浮点:小数位可以变化 Float单精度默认精度6位左右 Double 双精度默认精度16位左右 支持,控制数值范围 Type(M,D) M表示所有数值位数(不包括小数点和符 ...