OC面向对象—封装

OC面向对象—封装

一、面向对象和封装

面向对象的三大特性:封装(成员变量)、继承和多态

在OC语言中,使用@interface和@implementation来处理类。

 

@interface就好像暴露在外面的时钟表面,像外界提供展示以及接口。@implementation就好像隐藏在时钟内部的构造实现,把具体的实现封装了起来。

 

二、Set方法

在开发过程中,考虑到安全性要求,我们一般不在成员变量名前面使用@public、@protected等关键字修饰,而是使用Set方法来为对象提供成员变量的值。在set方法的内部也可以对一些不合理的赋值进行筛选过滤。

Set方法的作用:为外界提供一个设置成员变量值的方法

命名规范:

(1)方法名必须以set开头

(2)Set后面跟上成员变量的名称,首字母大写

(3)返回值一定是void

(4)一定要接收一个参数,而且参数类型需要和成员变量的类型一致

(5)形参名不能喝成员变量名一样(苹果官方推荐成员变量名前加_以示区分)

Set方法的好处:

(1)不让数据暴露在外,保证了数据的安全性

(2)对设置的数据进行过滤

Set方法使用示例:

Set方法的声明:

 

Set方法的实现:

 

测试程序:

 

三、Get方法

Get方法的作用:为调用者返回对象内部的成员变量

命名规范:

(1)一定有返回值,返回值的类型和成员变量的类型一致

(2)方法名和成员变量名一样

(3)不需要接收任何参数

Get方法使用示例:

Get方法的声明:

 

Get方法的实现:

 

测试程序:

 

 

注意1:在实际的开发中,不一定set和get方法都会提供,如果内部的成员变量比如学生的学号这样的数据只允许外界读取,但是不允许修改的情况,则通常只提供get方法而不提供set方法。

注意2:成员变量名的命名以下划线开头,get方法名不需要带下划线,使用下划线开头有两个好处:(1)与get方法的方法名区分开来;(2)可以喝一些其他的局部变量区分开来,下划线开头的变量,通常都是类的成员变量。

四、Self关键字

Self是一个指针,谁调用了当前方法,self就指向谁

【出现在对象方法中,就代表着当前对象,出现在类方法中,就代表着当前类】

Self的用途:

(1)可以利用self->成员变量名访问当前对象内部的成员变量(仅在对象方法中)

(2)[self 方法名];可以调用其他的对象方法或者是类方法

五、练习

要求:设计一个成绩类

 

实现:

 

测试程序:

 

转载于:https://www.cnblogs.com/crash-wu/p/4806359.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10张让你大脑崩溃的图,敢接受挑战吗?

全世界只有3.14 % 的人关注了爆炸吧知识快睡了吧?来做一组视觉游戏~一些人热爱挑战各种错觉,如果你也是这类型图片的粉丝,这10张图片会让你非常过瘾!入门篇【挑战一】在这张图片中,你能看到几个红球?5个&am…

Source Generator 单元测试

Source Generator 单元测试IntroSource Generator 是 .NET 5.0 以后引入的一个在编译期间动态生成代码的一个机制,介绍可以参考 C# 强大的新特性 Source GeneratorGetStarted使用起来还算比较简单的,我平时一般用 xunit,所以下面的示例也是使…

又一个中国男人荣获巨奖!拿奖拿的手软,却坦言“我对诺奖没有兴趣”...

全世界只有3.14 % 的人关注了爆炸吧知识获得诺奖似乎只是时间问题2020年9月10日,2021年科学突破奖( BREAKTHROUGH PRIZES)正式公布。来自中国香港的科学家卢煜明获得了生命科学科学突破奖,华人数学家孙崧获得了数学新视野奖。前几…

ffbe攻略站_最终幻想勇气启示录ffbe兵员强化攻略

最终幻想勇气启示录兵员如何强化?兵员强化后有哪些加强?来看看9k9k小编带来的最终幻想勇气启示录ffbe兵员强化攻略。在兵员选栏中,我们可以看到有强化兵员这一选项,在这里面,我们可以选择兵员进行强化,强化…

不止命令行!自定义VS生成事件

前言在VS中打开项目属性,选择“生成事件”选项卡。在“生成前事件命令行”或“生成后事件命令行”文本框中可以输入任何命令提示符或.bat文件中有效的命令:但是,有没有可能执行更丰富的命令呢?生成事件的本质上面设置的“生成事件…

如果你女朋友不让你看她卸妆......

1 如果你女朋友不让你看她卸妆▼2 扫地机器人的正确用法(图源网络,侵删)▼3 来比个心(素材来源网络,侵删)▼4 精彩攻防战▼5 那些吃辣条的小学生长大了...▼6 人生的道路上有时候也要回头看看▼7 先礼…

[9月29日的脚本] 枚举SharePoint列表(PowerShell)

脚本下载: SPListEnumerator.zip http://gallery.technet.microsoft.com/scriptcenter/SPListEnumerator-PowerShell-b0ce0b9f 本脚本通过一个“大型”列表或者是文档库来枚举并为相关项提供信息。 在SharePoint(2007版和2010版)中,我们有一个…

在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务https://procodeguide.com/programming/polly-in-aspnet-core/在本文中,我们将了解如何在微服务中实现弹性容错,即在 ASP.NET Core 中使用 Polly 构建弹性微服务(Web API&#xff0…

Android开发者指南(29) —— USB Host and Accessory

前言 本章内容为Android开发者指南的 USB章节,译为"USB主从设备",版本为Android 4.0 r1,翻译来自:"太阳火神的美丽人生",欢迎访问他的博客:"http://alot.sinaapp.com"&#…

知乎超高赞:都有哪些习惯值得长期坚持?

全世界只有3.14 % 的人关注了爆炸吧知识知乎上有个高赞问题:有哪些值得长期坚持下去就能改变人生的好习惯?其中最高频的回答是读书。随着经历和阅历的增加,越来越多的人清醒的认识到:读书不再是学生时代的事,而是一生的…

mysql 免费前端_MySQL

MySQL这是一个关系型数据库,存在表的概念。结构数据库可以存放多张表,每个表可以存放多个字段,每个字段可以存放多个记录。DOS命令操作数据库PHPstudy使用终端打开数据库第一步:设置-->MySQL工具-->MySQL命令行;…

惊了!日本街头出现透明公厕,竟有人排队抢着上!

全世界只有3.14 % 的人关注了爆炸吧知识最近在日本一个公园内,一间透明的厕所火了!厕所为什么是透明的?如何保证私密性?还是一个装置艺术,在哗众取宠?相信你跟我有一样的疑问。其实啊,这是日本财…

Gitflow branch与Docker image tag命名冲突怎么办?

谷歌还是比必应要好用一点。在前公司,我根据主流的git flow 给团队搭建了一套devops流程,运行在 docker & k8s上。在现代devops流程中,一般推荐使用git分支名或者git tag作为镜像的tag名。在实际操作中, 我遇到了一个流程阻塞…

ubuntu 安装 php

按照 Unofficial Ubuntu 6.06 (Dapper Drake) Linux Starter Guide的步骤来 一、安装Apache2 sudo apt-get install apache2 然后在Firefox中打开: http://localhost/ 提示成功 安装完毕后,接下来就要启动Apache了 如果只是用于本地开发,加强安全性&…

测试你的Python 水平----6

为什么80%的码农都做不了架构师?>>> 1、问:简述python中unicode和utf-8的关系?常用的函数有哪些?答:unicode是一个字符编码集合,定义每个字符的唯一编码;utf-8则是unicode的一种实现…

970页绝版资料!初高中数学与竞赛知识点+方法技巧,由苏步青当顾问,众多一线名师共同编写!...

全世界只有3.14 % 的人关注了爆炸吧知如何才能学好数学?我国著名数学家苏步青先生曾说:"要学好数学,方法不外乎打好基础,多做习题,多加思索和分析”。为了帮助大家学好数学,今天,超模君要给…

使用WTMPlus快速搭建发卡网

快点关注我们吧作者介绍不倔强的草莓,从事互联网乞讨行业多年,深入了解乞讨业务。开发过草莓要饭网等系统。对互联网乞讨的运营有一定经验。什么是WTM框架?WTM框架是一款.NET平台下的开源快速开发框架,可以快速、灵活、高效的开发一个基于.NE…

mysql老叶博客_MySQL binlog后面的编号最大是多大?【老叶茶馆公众号】

MySQL binlog后面的编号最大是多大?具体文章请关注微信公众号:izhishuedu 【知数堂】 知数堂版权所有。这里我就不啰嗦了,直接上贴代码:版本:5.7.18mysql-5.7.18/sql/binlog.cc 大约在3310行开始:MAX_LOG_…

如何优雅的当海王……

1 这车怪有个性的▼2 这个胡律师要火啊▼3 被拦下的教师节礼物……▼4 老公”偷情“的证据▼5 这船快得很,沉得快▼6 别耽误孩子,让孩子去跑马拉松吧▼7 这是要电脑养蛊?▼你点的每个赞,我都认真当成了喜欢

Linux Command Line 解析

处理模型 Linux kernel 的启动包括很多组件的初始化和相关配置,这些配置参数一般是通过command line 进行配置的。在进行后续分析之前,先来理解一下command line 的处理模型: 要处理的对象是一个字符串,其中包含了各种配置信息&am…