Objective-C 封装 继承 多态
封装
#import <Foundation/Foundation.h>
@interface Person : NSObject {
//@public
int _age;
}
- (void) setAge : (int) age;
- (int) age;
@end
@implementation Person
- (void) setAge : (int) age {
if(age <= ) {
age = ;
}
_age = age;
}
- (int) age {
return _age;
}
@end
int main() {
Person *p = [Person new];
//p->age = 10;
//NSLog(@"年龄是: %i", p->age);
[p setAge : ];
NSLog(@"年龄是: %i", [p age]);
return ;
}
/** 注意我的命名规范 **/
//封装的好处: 代码的安全性高
继承和组合
#import <Foundation/Foundation.h>
@interface AClass : NSObject {
int _age;
int _height;
}
@end
@implementation AClass
@end
/** 继承 **/
@interface BClass : AClass{
}
@end
@implementation BClass
@end
/** 组合 **/
@interface CClass : NSObject {
AClass *_aClass;
}
@end
@implementation CClass
@end
int main() {
return ;
}
//注意: OC是单继承
//子类方法和属性的访问过程: 如果子类没有 就去访问父类的
//子类和父类不能有相同的成员变量
//子类和父类可以有相同的方法(方法的重写)
/** 继承的好处 **/
//不改变原来模型的基础上 拓充方法
//建立类与类之间的联系
//抽取了公共代码
/** 继承的坏处 **/
//耦合性强
/** super 关键字 **/
//直接调用父类中的方法 [super 方法名]
//super 处在对象方法中就会调用父类的对象方法
//super 处在类方法中就会调用父类的类方法
//使用场合: 子类重写父类的方法时想保留父类的一些行为
多态
#import <Foundation/Foundation.h> @interface Animal : NSObject
- (void) eat;
@end @implementation Animal
- (void) eat {
NSLog(@"Animal在吃东西");
}
@end @interface Dog : Animal
@end @implementation Dog
- (void) eat {
NSLog(@"Dog在吃东西");
}
@end int main() {
Animal *a = [Dog new];
[a eat];
return ;
} /** 多态 **/
//多态只存在子父类继承关系中
//子类对象赋值给父类指针 /** 多态的好处 **/
//用父类接收参数 节省代码 /** 多态的局限性 **/
//父类类型的变量不能直接调用子类特有的方法(可以考虑强制转换) /** 多态的细节 **/
//动态绑定: 在运行时根据对象的类型确定动态调用的方法
Objective-C 封装 继承 多态的更多相关文章
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
- 浅谈学习C++时用到的【封装继承多态】三个概念
封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...
- Java三大特性(封装,继承,多态)
Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- Java基础——面向对象(封装——继承——多态 )
对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...
- Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...
- OOP三大核心封装继承多态
OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...
- python面向对象(封装,继承,多态)
python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...
- C语言设计模式-封装-继承-多态
快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...
- java四大特性理解(封装继承多态抽象)
封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一 ...
随机推荐
- python2.7 安装Django
目前Django最新版是2.0,不支持Python2,在使用pip 安装的时候会报错,pip默认安装的是最新的稳定版本 使用pip指定安装的版本:pip install django==1.11.4 ...
- 面试准备——(二)专业知识(2)Python
面试遇到的问题: 滴滴: 1. Python的数据结构 2. list和tuple的区别 3. list中有哪些操作?append和extend的区别? 4. list和dict的却别?dict是有序 ...
- libstagefright 音视频同步方案
1:音视频数据都有一个list,用于存放解码后的数据: List mFilledBuffers; 2:解码后的音视频数据不断的往list中存放,不做音视频同步方面的时间上控制 mFille ...
- git 分支管理方案
现有一般的公司项目均使用git(大多数是gitLab)管理. 开发组 我们的项目都要建立在 开发组的名下 (git.xxcompany.com/xxgroup),除需要公司内部开源的项目,都必须设置为 ...
- HTML中IMG标签总结
一.Img标签有两个重要的属性: 1.src 属性:图片的地址 2.alt 属性:图片不显示是现实的文字 二.Img标签是行级元素: img.input属于行内替换元素.height/width/ ...
- js取一个对象中的另一个对象
最开始的截图 原本是想取到其中的foodName 先是用一个for循环循环了下 for (var i=0;i<res.data.length;i++) { this.goodsList.res. ...
- vue项目出现空格警告的原因及其解决办法
原因: 因为你的Webpack 配置中大概是使用了 eslint-loader,这是用来规范代码风格的,在多人协作或大项目中推荐使用,不想要则可以在 webpack.config.js 中去掉.esl ...
- linux系统的介绍与环境搭建准备38-40
操作系统(OS):用于控制管理计算机,形成在用户和机器之间传递信息的系统软件 linux是什么? <--unix系统是linux的前身---> 特点: 开放的源代码,自由修改 自由传播,没 ...
- 05JavaScript语句
1.JavaScript 语句 JavaScript 语句是发给浏览器的命令. 这些命令的作用是告诉浏览器要做的事情. 2.分号 ; 分号用于分隔 JavaScript 语句. 通常我们在每条可执行的 ...
- 02JavaScript用法
前言: 介绍一下javascript的最基础语法规范和用法. HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 ...