OC第二课

主要内容:实例变量可见度、方法

一、实例变量可见度

public(共有的):实例变量可以在类的内部和外部使用

protected(受保护的、默认的):实例变量只能在该类及其子类中使用

private(私有的):实例对象只能在该类中使用

所谓的内部是指:@interface .... @end之间

示例:

@interface

@public                                 / /共有的,谁都能访问

NSString  *_adress ;            / /地址

NSString  *_hobby ;             / /爱好

@protected                           / /受保护的、默认的,只能在该类及其子类中使用

NSString  *_name ;               / /姓名

NSString  *_age ;                  / /年龄

@private                               / /私有的只能在该类内部使用

NSString  *_gender ;            / /性别

@end

一般情况下,使用默认的受保护的 @protected

为什么呢?因为使用@public关键字暴漏了类内部的组件,违背了面向对象的 “ 封装 ” 特性

下面是使用@public、@protected、@private的区别

如何在其他文件中使用protected修饰的实例变量呢?

二、方法

OC中有两种方法:

类方法:只能类使用,例如  +(id)alloc

注意:类方法中不能使用实例变量

实例方法:只能对象使用,例如:-(void)sayHi

方法名就是:去掉方法类型、返回值类型、参数类型、参数名和空格,剩下的就是方法名

例如:replaceObjectAtindex :withObject:这就是一个方法名

注意:1、类中不能出现相同的方法名

2、" : "标示参数,不能省略,有 " : "必须有参数

赋值、取值方法

示例:

- (void)setName:(NSString  *)name;

- (NSString  *)getName;

- (void)setName:(NSString  *)name

{

_name = name;

}

- (NSString  *)getName

{

return  _name;

}

不过我们一般写成这种方式(多参方式:简介、省事)

示例:

- (void)setName:(NSString  *)name

setAge:(int)age

setHeight:(float)height ;

- (NSString  *)getName

{

return  _name;

}

- (int)getAge

{

return  _age;

}

- (float)getHeight

{

return  _height;

}

注意:1、OC里面,为实例变量赋值的方法称为setter(设置器)

2、读取实例变量值的方法称作getter(访问器)

3、setter方法可以把参数写在一起(多参),但是获取方法getter必须分开写,一个参数一个getter方法

4、无论是setter还是getter内部操作的是实例变量,每一个实例变量都需要一对setter和getter方法

方法的使用:

在OC里面没有 “ student调用sayHi ” 这种表述

正确表述:给student对象发送sayHi消息,格式: [ student  sayHi ]

三、自定义初始化方法

- (id)init这个初始化方法只能给实例变量设置默认值,不灵活

- (instancetype)initWithName:自定义初始化方法,根据需求定义初始化的方法

示例:

- (instancetype)initWithName:(NSString   *)name

initWithAge:(int)age

initWithHeight:(float)height ;

- (instancetype)initWithName:(NSString  *)name

initWithAge:(int)age

initWithHeight:(float)height

{

_name = name;

_age = age;

_height = height;

return   self;

}

#import:导入头文件,即导入头文件中的内容到当前类

#import  " " :导入自定义的类

#import  <>:导入系统类库中的头文件

功能类似C语言的#include,但是可以避免头文件的重复导入

四、嵌套循环导入

创建两个类,A继承于NSObject,B继承于NSObject

A类有个实例变量    B  *b;

B类有个实例变量    A  *a;

这时就需要用到@class关键字

@class:告诉编译器@class后面的字符串作为类名使用,并未导入类的接口内容,有效避免了嵌套循环导入

时间: 2024-08-05 02:45:33

OC第二课的相关文章

第二课:IOS(App)UIImage控件与TextField控件学习

作为一名实习生我是1.3.5在办公室工作,2.4.6去另一个地方听课学习IOS(app)课程,为了不落下课程,我准备每天晚上把落下的课程自学一遍,把不懂的记下等去听课的时候问老师,希望自己能跟上学习的步伐,不浪费时间.这一课是前几天听的,今天一起也写上了. 第二课:IOS(App)UIImage控件与TextField控件的学习,代码如下 一:UIImage控件代码:把图片添加到视图中并设置大小,这里没有牵涉到图片背景的颜色设置,我猜想应该是没必要去设置的吧,因为没有按钮功能的话背景颜色也看不到

grails2.3.11第二课

第二课主要介绍grails相关插件的使用,这是敏捷开发所必需的途径. 可以把grails的插件看作是grails正常项目的迷你型,因为看插件的源码,它的目录结构和正常项目相差无几. 官方开源插件地址 https://grails.org/plugins 内部插件地址 http://maven.info.bit.edu.cn 主要介绍了常用的一些插件吧,每个插件的用法不尽相同,但是有一个共同点是要在BuildConfig.groovy这个配置文件里 compile 相关插件. 常用的包括: 前端插

【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做了介绍,也带大家配置了SDL的开发环境.请大家按照上一课的步骤创建一个SDL工程,能够初步运行. 如果遇到问题,可以百度,Google相关平台SDL的配置.或者联系小编. 当然了,有些朋友可能会说开发C语言游戏还可以用GTK+这个库,但是个人认为GTK+没有SDL那么适合开发游戏,其创建图形界面的能

【Cocos游戏实战】功夫小子第二课之基础类分析和实现

本节课的视频教程地址是:第二课在此 如果本教程有帮助带您,希望您能点击进去观看一下,而且现在注册成为极客学院的会员,验证手机号码和邮箱号码会赠送三天的会员时间,会员可以无限制的下载和观看所有的视频,谢谢您的支持! 在开始第二节课之前,这里需要声明的是, 首先:本系列课程是为了结合Cocos2d-x 3.x 的基本组件和核心模块的学习而制作的,开发所使用的版本是3.0,但是代码稍加修改就可以运用在3.X的其他版本上. 其次:本游戏项目是一个非商业化项目,游戏资源和代码都会在后续的课程中释放出来,供

【转】第二课.配置和初始化

原文网址:http://fsjoy.blog.51cto.com/318484/244803 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://fsjoy.blog.51cto.com/318484/244803 第二课.配置和初始化 配置git 在使用git之前你需要配置一下git.git在你创建提交的时候会记录你的名字和email地址,所以你应该告诉git这些内容.可以使用'git config'命令来设置,如果传递参数'-

ThinkPHP第二课 框架MVC目录和URL访问方式

第二课 框架MVC目录和URL访问方式 1.说明: ThinkPHP是基于MVC的框架,认识框架目录将更好的实现分层,掌握ThinkPHP.URL访问就是访问框架的控制器(MVC中的C),共有四种方式,框架中的C起到分模块的作用. url的4种访问方式: 1.PATHINFO 模式 -- 重点!!!!!! http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2 2.普通模式 http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

【Web探索之旅】第二部分第二课:服务器语言

内容简介 1.第二部分第二课:服务器语言 2.第二部分第三课预告:框架和内容管理系统 第二部分第二课:服务器语言 介绍了Web的客户端,我们来谈谈Web的服务器端. 既然客户端有客户端的编程语言(HTML,CSS和JS),那么我们服务器端岂能逊色呢,对吧. 服务器端也有不少种编程语言.这些编程语言写成的程序会在服务器端的电脑上被执行. 如果说客户端的语言编写的程序决定了我们的网页的外观,那么服务器端的语言编写的程序决定了网页的功能和如何与用户交互. 你也许会问:"既然我们可以用HTML,CSS和

【C语言探索之旅】 第二部分第二课:进击的指针,C语言的王牌!

内容简介 1.课程大纲 2.第二部分第二课: 进击的指针,C语言的王牌 3.第二部分第三课预告: 数组 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型

Ng第二课:单变量线性回归(Linear Regression with One Variable)

二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 2.4  梯度下降 2.5  梯度下降的直观理解 2.6  梯度下降的线性回归 2.7  接下来的内容 2.1  模型表示 之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示: 我们将要用来描述这个回归问题的标记如下: m                代表训练集中实例的数量 x