【黑马程序员】-我的OC学习笔记(2)-封装、继承、多态

Vek385评估板(二):板子联网 & memtester安装(LPDDR5X测试) 继上一篇文章:Vek385评估板(一):EDF成功烧录启动及一些问题。 本章完成最主要的两个功能:开发板联网+内存 memtester。因为我是做测试行业的,所以这两个是最想试的。内存测试,除了FPGA测,也可以系统级测,本次在versal上实现这个功能,主要是可以应急。在没有安卓、X86的情况下,可以使用本方案测试。 下一篇会继续做一些其他功能。 阅读详情

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

</pre><p></p><p><span style="white-space:pre"></span>面向对象的三个重要特点是:封装、继承、多态。OC也支持这三大特性,但OC与一般的面向对象语言不同,OC不支持多重继承只支持单继承。</p><p><span style="white-space:pre"></span>一、封装的概念</p><p><span style="white-space:pre"></span>封装在我的学习理解中就感觉像是我们日常所用的电子产品,比如手机一样,我们都知道我们可以使用手机打电话、发短信、聊微信、、、,但是我们却并不知道手机具体实现这些功能的技术细节,这就是封装。引用到类中我们也可以这样去理解封装,我们影藏了我们不想被外界访问的数据和方法的具体实现细节,我们只像外界提供我们定义的方法接口,让别人去使用接口而不关注具体的实现细节和数据类型。这就是面向对象中的封装的概念。</p><p><span style="white-space:pre"></span>在封装的概念下,自然的我们就要关注一个事情那就是实例变量的作用域。即我如何控制我的实例变量能否被外界访问、能被哪些人访问,在OC中我们使用访问修饰符:@public、@protected、@private来进行实例变量的权限控制。这三个修饰符的修饰权限规则如下:</p><p> <span style="white-space:pre"> </span>@public:公开的,在任何地方都可以使用实例变量进行访问;</p><p><span style="white-space:pre"></span>@protected:受保护的,只能在当前类和子类中访问;</p><p><span style="white-space:pre"></span>@private:私有的,只能在当前类中使用或对象方法中使用;</p><p><span style="white-space:pre"></span>如下代码所示:</p><p> </p><pre name="code" class="objc">//定义一个Person类,Person.h
#import <Foundation/Foundation.h>

#interface Person : NSObject
{
	@public
	NSString _name;//定义一个共有的属性name
	@protected
	int _age;//定义一个保护类型的属性age
	@private
	double _weight;//第一一个私有属性weight
}
-(void)setName: (NSSting *)name;
-(void)setAge: (int) age;
-(void)setWeight: (double) weight;
-(NSString)name;
-(int)age;
-(double)weight;
@end

//实现的文件Person.m
#import"Person.h"
@implementation Person

-(void) setName:(NSString *)name
{
	_name = name;
}

-(void) setAge:(int) age
{
	_age = age;
}

-(void) setWeight:(double) weight
{
	_weight = weight;
}

-(NSString) name
{
	return _name;
}

-(int) age
{
	return age;
}

-(double) weight
{
	return _weight;
}

@end
我们定义了一个Person类,其有三个属性name、age、weight,其中name是公有的、age是受保护的、weight是私有的,我们可以在main函数中直接访问name但是却不能访问age和weight,因为我们使用权限修饰符隐藏了他们,使得他们的属性不会被我们不愿意的方法使用。同时我们为各个属性编写了各自的set和get方法,使得我们可以调用这些接口操作我们隐藏的属性,同时我们也隐藏了这些方法的实现细节,这样我们就很好的封装了Person类。

二、继承

面向对象的第二个重要的特性是继承,继承就是从他的基类或称之为父类继承方法或属性,就像是儿子继承父亲的遗产一样,父类有的属性和在头文件中声明的方法在其子类中都有对应属性和方法。同时OC支持子类对父类方法的重写,即在子类中实现一个与父类具有同类型的返回值、方法名、形参列表的方法。继承的代码实现为@interface 类名 : 父类名。例如以下代码:

//定义一个Animal类
@interface Animal : NSObject
{
	int _age;
	int _weight;
}
-(void) eat:(NSString *)foodName;
-(void) run;
@end

//实现Animal类
@implementation Animal

-(void) eat:(NSString *)foodName
{
	NSLog (@"动物吃%@", foodName);
}

-(void) run
{
	NSLog (@"动物移动");
}

//定义一个Bird类继承Animal类
@interface Bird : Animal
@end

//Bird的实现
@implementation Bird
-(void) run
{
	NSLog (@"%d岁的小鸟在飞翔");
}
@end
如上代码我们就定义了一个Bird类来继承Animal类,而Animal类也继承了NSObject类。实则上Bird继承了NSObject类和Animal类,OC不支持多重继承,但支持多层继承,即如果我再定义一个Bugu鸟类继承Bird类依旧可以。在上述代码中我们重写了run方法,因此我们用如下代码调用run方法将得到不同的效果:Animal *ani = [Animal new];

[ani run];将打印出结果:动物移动;Bird *bird = [Bird new]; [bird run];将打印出结果:3岁的小鸟在飞翔(假设已设定年龄为3),由此我们可以看出子类继承了父类的非私有方法和属性,并且在子类中可以进行访问。对于父类的私有属性,子类依旧继承了但只是不能访问而已。

三、多态

OC中的多态的概念一句话来说就是不同的对象以自己的方式响应相同名称方法的能力称为多态。这句话中包含了多态的条件:需要有继承关系、有方法的重写;所以多态可以这么理解:我们在父类中声明通用的方法,而具体的对象以自己的策略实现具体的方法。比如上述的Animal和Bid代码实现,我们就可以这样来调用Bird的run方法:

Animal *ani = [Bird new]; [ani run];结果为:3岁的小鸟在飞翔;这就是多态的一种表现。而多态的优点是简化了编程的接口,他容许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数名字一个新名字。多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有的可能。而多态的原理则牵涉到OC中的动态绑定,动态绑定的概念就是直到程序运行时才确定要对对象调用的实际方法。

量子化学仿真软件:VASP_(9).磁性材料计算 在量子化学仿真软件 VASP 中,磁性材料的计算是一个复杂但重要的过程。通过正确设置磁性状态、分析磁性性质、优化计算参数以及研究磁性相变和磁动力学,可以更准确地描述和预测磁性材料的性能。希望本节的内容能够为研究磁性材料的科研人员提供有用的参考和指导。 阅读详情

相关推荐

SRAM compiler中Power Gating与Retention的实战配置指南

本文深入解析了在SRAM compiler中配置Power Gating(电源门控)与Retention(数据保持)功能的实战指南。针对低功耗芯片设计,文章详细阐述了如何根据应用场景(如移动AP、IoT设备)权衡开关类型、尺寸、唤醒时序以及保持电压,以实现静态功耗优化与数据可靠性的最佳平衡,并强调了后端实现与签核检查的关键要点。

weixin_29204121的博客 294

java封装,继承和多态

1 package case8; public class TestPolymorphism { public static void main(String[] args) { // 以多态方式分别实例化子类对象并调用eat()方法 /********* begin *********/ Animal a=new Cat(); Animal b=new Dog(); Animal c...

NJU phd 在读。 3115

用UDP协议在dos命令行里模拟一个聊天程序

/* 需求: 在dos命令行里模拟一个聊天程序 有收数据的部分,和发数据的部分,这两部分需要同时执行。 那就需要用到多线程技术。 一个线程控制收,一个线程控制发。 */ import java.io.*; import java.net.*; class C

s_x_x的记录 1955

java综合练习

1 package case3; import java.util.Scanner; public class Task3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String pppName = sc.next(); int pppAge = sc.nextI...

NJU phd 在读。 1914

从零开始了解数据采集(五)——工业通信协议:数据采集的“语言”桥梁

数据采集常用的通信协议有哪一些?看完这篇你就了解了~

李恒的博客 4058

【纯血鸿蒙】安装hdc工具

参考资料:

oh.K 5547

Educoder–Java面向对象(第二章)- 封装、继承和多态【笔记+参考代码】

Educoder–Java面向对象(第二章)- 封装、继承和多态【笔记+参考代码】 第一关 编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 声明一个Person类,私有化属性name和age,并将字段封装起来; 在Person类中定义一个talk()方法,打印姓名和年龄信息; 在main方法中声明并实例化一Person对象p,给p中的属性赋值,调用talk()方法打印 我是...

fuhanghang的博客 4万+

量化交易——量化选股(多因子选股)

就是用过去的股票的收益率对多因子进行回归,得到一个回归方程,然后再把最新的因子值代入回归方程得到一个对未来股票收益的预判,然后再以此为依据进行选股。的方法是建立在市场无效或弱有效的前提之下,随着使用多因子选股模型的投资者数量的不断增加,有的因子会逐渐失效,而。就是根据各个因子的大小对股票进行打分,然后按照一定的权重加权得到一个总分,根据总分再对股票进行筛选。另一方面,一些因子可能在过去的市场环境下比较有效,而随着市场风格的改变,这些。波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的。

jiucaixiuyang的博客 1787

Educoder--Java面向对象(第三章综合练习)-封装继承和多态的综合练习参考代码

Educoder–Java面向对象(第三章综合练习)-封装继承和多态的综合练习【笔记+参考代码】 第一关 编程要求 根据提示,在右侧编辑器Begin-End处补充代码: 声明一个抽象类Pet,封装属性name和sex,声明一个带有两个参数的构造函数,声明抽象方法void talk()和void eat(); 声明一个Dog类继承自Pet,封装属性color,声明带有三个参数的构造函数,复写tal...

fuhanghang的博客 4万+

飞腾Ubantu22.04.3安装OpenNebula测试

因OpenneBula官方镜像源只有AMD架构的镜像包不存在ARM的镜像包,借此用源码编译进行测试。

坚持就是胜利的博客 1009

【100%通过率】华为od统一考试B卷【需要打开多少监视器】JAVA&Go 实现

某长方形停车场,每个车位上方都有对应监控器,当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时,监控器才需要打开:给出某一时刻停车场的停车分布,请统计最少需要打开多少个监控器

MISAYAONE的博客 1万+

Java面向对象进阶-封装、继承、多态

Java面向对象进阶 1.static关键字 static表示“静态”的意思,可以用来修饰成员变量和成员方法。 static的主要作用在于创建独立于具体对象的域变量或者方法 简单理解: ​ 被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。 并且不会因为对象的多次创建而在内存中建立多份数据 注意 静态成员在类加载时加载并初始化。 无论一个类存在多少个对象 , 静态的属性, 永远在内存中只有一份(可以理解为所有对象公用 ) 在访问时:静态不能访

AnswerCoder的博客 1406

恒玄BES调试笔记-BES2500如何打开COMPEXP

打开Compressor and expander会占用资源,这个根据个人项目需求而定吧!打开方法,以及参数修改如下: config\best2300a_ibrt_anc\target.mk SPEECH_RX_COMPEXP ?= 1 apps\audioplayers\bt_sco_chain_cfg_default.c #if defined(SPEECH_RX_COMPEXP) /*****************************************************

leezs的博客 706

黑马程序员---oc 封装,继承,多态

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

Q472622179的专栏 854

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

黑马程序员—IOS基础之OC—类的三大特性封装、继承、多态

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

Dnorsunshine的博客 702

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

黑马程序员 -- OC语言 封装 继承 多态

------- android培训、.Net培训、IOS培训、碧空海的技术博客,期待与您交流!---------- 第二讲 封装 继承 多态 A.封装(成员变量/方法的封装) 1.封装是建立在类的基础之上。 a.封装的好处: @interface Student :NSObject { @public Int age; } //提供一个方法给外界设置age的属性值 //我

bikonghai01的专栏 526

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

黑马程序员——OC三大特性(继承、多态、封装)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

jiongjiong_1的专栏 528

黑马程序员------OC类的封装 继承 多态

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

A1003052589的博客 774

黑马程序员--OC之类的封装继承多态使用技巧

黑马程序员--OC之类的封装继承多态使用技巧 ------- android培训、java培训、期待与您交流! ----------     1、类的封装:      不封装的缺点: 当一个类把自己的属性暴露给外部的时候,那么该类就失去对属性的管理权 将数据隐藏起来,只能用此类的方法函数才可以访问或者设置数据,不可被外部 任意存储是面向对象设计本质。降低了数据被无用的可能性! 在OC

hxwwn的博客 519

黑马程序员——OC三大特性----封装、继承、多态

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-封装@public的成员可以被随意赋值,这样会使代码不严谨,为了避免这种现象,OC采用了封装,将方法成员封装起来。这时需要使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西)。对于只读即只允许外界访问不允许其修改的变量采用get方法,允许外界访问,并在一定范围内修改变量采用s

qq_26989441的专栏 612

黑马程序员_OC面向对象之继承和多态

一、继承

如果你错过了一天,那么你就真的错过了一天! 4621

黑马程序员——OC的三大特性:封装,继承,多态

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、封装 1、什么是封装 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。 简单点说就是隐藏对象的属性和

jerome3的专栏 477

黑马程序员——ios学习笔记 OC 封装&多态

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 封装 这是面向对象的根本,即一个结构不仅可以有数据成员,也可以有函数成员,可以把一个结构需要的属性以及针对于属性提供的方法封装在一个结构中,这个结构就是类,封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,OC中有四种访问权限修饰符:public,prote

tt3tt3tt的博客 362

黑马程序员_OC_封装.继承.多态

一.封装 1.       封装的好处 过滤不合理的值 屏蔽内部的赋值过程 让外界不必关注内部的细节

huangchen_wyx的专栏 583

黑马程序员——OC基础02—封装、继承、多态

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-一、面向对象三大特性之封装1)封装的作用之前用的@public的成员可以任意被赋值,是因为隐藏的数据底层复杂的东西暴露出一个借口,不封装的话就会失去对属性的管理权,具有很大的风险。 这时候我们需要set和get方法来管理成员的访问,过滤掉不合理的东西。2)封装的原理:实例变量智能呗当前类的对象进行访问。 set

Peide04271915的博客 532

黑马程序员--OC面向对象的三大特征——封装、继承、多态

一、封装 1、封装是对象和类概念的主要特性。它是隐藏内部实现,稳定外部接口,可以看作是“包装”。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。   2、set方法 1)  作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值 2)  命名规范:    方法都是以set开头,而且后面跟上成员变量名,成员变量名

qq_17490915的专栏 948
上一篇: 【黑马程序员】-我的OC学习笔记(1)-类
下一篇: 【黑马程序员】-我的OC学习笔记(3)-存取器方法和构造方法重写
Little__Coder
博客等级 码龄11年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值