OC面向对象继承关系和组合关系笔记
继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法;
继承的关系特点描述出来就是:** “是” ** (例如:学生类 是 人类)
组合关系描述的语句是:**** “拥有” *** (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 )
继承示例代码:
- #import <Foundation/Foundation.h>
- //Animal类的声明
- @interface Animal : NSObject
- {
- int _legs;
- }
- - (void)eat;
- - (void)run;
- @end
- //Animal类的实现
- @implementation Animal
- - (void)eat
- {
- NSLog(@"动物在吃东西");
- }
- - (void)run
- {
- NSLog(@"动物在跑");
- }
- @end
- //子类Dog 继承 Animal
- @interface Dog : Animal
- {
- //int _legs;这个是不允许的,重复定义父类已有的成员变量,编译器会报错,但是在java中是可以的
- }
- @end
- //子类dog的实现
- @implementation Dog
- //方法的覆盖或叫重写
- - (void)eat
- {
- NSLog(@"狗在吃东西");
- }
- @end
- int main()
- {
- Dog *d = [Dog new];
- [d eat];//由于子类重写了,所以就用子类的eat方法
- [d run];//调用该方法时,还是会先在dog类中找,找不到时区父类中找
- }
继承的好处:
1:继承能够抽取重复的代码,提高了代码的重用;
2:继承使类和类之间建立了关系;
组合示例代码:
- //成绩类
- @interface Score : NSObject
- {
- int _cScore;
- int _ocScore;
- }
- @end
- @implementation Score
- @end
- //学生类
- @interface Student : NSObject
- {
- //组合:_cScore,_ocScore这两个属性在Score类中有了,但是不适合用继承,用组合比较好
- //int _cScore;
- //int _ocScore;
- Score *_score;
- int _age;
- }
- @end
- @implementation Student : NSObject
- @end
OC面向对象继承关系和组合关系笔记的更多相关文章
- OC面向对象—继承
OC面向对象—继承 一.基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). ...
- c# 面向对象/继承关系设计
继承 RTTI RTTI 概念 RTTI(Run Time Type Identification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引用所指的对象的实际派生类型. ...
- js面向对象继承
前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2 ...
- 面向对象设计之------Is-A(继承关系)、Has-A(合成关系,组合关系)和Use-A(依赖关系)(转)
原文url:http://blog.csdn.net/loveyou128144/article/details/4749576 @Is-A,Has-A,Use-A则是用来描述类与类之间关系的.简单的 ...
- [原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Programming In Scala笔记-第十一章、Scala中的类继承关系
本章主要从整体层面了解Scala中的类层级关系. 一.Scala的类层级 在Java中Object类是所有类的最终父类,其他所有类都直接或间接的继承了Object类.在Scala中所有类的最终父类为A ...
- 06 (OC)* iOS中UI类之间的继承关系
iOS中UI类之间的继承关系 此图可以更好的让你去理解iOS中一些底层的关系.你能够了解以及理解UI类之间的继承关系,你会更加明白苹果有关于底层的东西,更有助于你的项目开发由它们的底层关系,就能更加容 ...
- Java学习笔记:01面向对象-继承
01面向对象-继承 一.java中的数据类型 1.基本数据类型:四类 八种 byte(1) boolean(1) short(2) char(2) int(4) float(4) long(8) do ...
- 0022 Java学习笔记-面向对象-继承、多态、组合
继承的特点 单继承:每个子类最多只有一个直接父类,注意是直接父类,间接父类个数不限 注意父类的概念:A-->B-->C-->D,在这里,ABC都是D的父类,C是D的直接父类,AB是D ...
随机推荐
- 【CSS3】---background-origin background-clip background-size
background-origin 设置元素背景图片的原始起始位置. 语法: background-origin : border-box | padding-box | content-box; 参 ...
- WebAPI GET和POST请求的几种方(转发)
WebAPI GET和POST请求的几种方式 GET请求 1.无参数get请求 一般get请求有两种写法,一种是$.get() 一种是$.ajax({type:"get"}), ...
- GridViewDemo
GridViewDemo:网格示例 GridView标签内定义列宽,android:columnWidth="120dp". getView()内定义每一个ImageView的大小 ...
- 让DIV浮动在表格上固定位置,不会随着显示器的分辨率变化。
<td> <div class="box"> <img src="/aa.jpg" /> <div class=&qu ...
- 64位系统下注册32位dll文件
64位系统下注册32位dll文件 在64位系统里注册32位软件所需的一些dll会提示不兼容,大概因为32 位进程不能加载64位Dll,64位进程也不可以加载32的导致. 若要支持的32 位和64 位C ...
- 【学习笔记】【C语言】流程控制
顺序结构:默认的流程结构.按照书写顺序执行每一条语句. 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. 循环结构:在给定条件成立的情况下,反复执行某一段代码.
- [javascript|基本概念|Number]学习笔记
Number类型的值:整数/浮点数值 整数 十进制 e.g.: var intNum = 50; 八进制 (严格模式下无效,解析错误)字面值首位必须是0,之后的数字序列为0-7 e.g.: va ...
- Php 与 Json
PHP与JSON 在PHP中存在两个与JSON相关的函数: json_encode($array或$object)函数:把一个数组或对象转化为JSON格式的字符串 json_decode($json, ...
- floodfill算法解题示例
Flood fill算法是从一个区域中提取若干个连通的点与其他相邻区域区分开(或分别染成不同颜色)的经典算法.因为其思路类似洪水从一个区域扩散到所有能到达的区域而得名.在GNU Go和扫雷中,Floo ...
- POJ1056 IMMEDIATE DECODABILITY【数据结构】
题目地址:http://poj.org/problem?id=1056 Description An encoding of a set of symbols is said to be immedi ...