黑马程序员-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:继承使类和类之间建立了关系;

组合示例代码:


 1 //成绩类
2 @interface Score : NSObject
3 {
4 int _cScore;
5 int _ocScore;
6 }
7 @end
8
9 @implementation Score
10
11 @end
12
13
14
15 //学生类
16 @interface Student : NSObject
17 {
18 //组合:_cScore,_ocScore这两个属性在Score类中有了,但是不适合用继承,用组合比较好
19 //int _cScore;
20 //int _ocScore;
21 Score *_score;
22 int _age;
23 }
24 @end
25
26 @implementation Student : NSObject
27
28 @end

黑马程序员-OC面向对象继承关系和组合关系笔记,布布扣,bubuko.com

时间: 2024-10-10 23:25:05

黑马程序员-OC面向对象继承关系和组合关系笔记的相关文章

黑马程序员------OC面向对象之封装

---Android培训.iOS培训.Java培训,期待与您交流----- 一.面向对象和封装 面向对象三大特征:封装.继承.多态. 封装是对象和类概念的主要特性.它是隐藏内部实现,稳定外部接口,可以看作是"包装". 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 好处:使用更加简单  变量更加安全 可以隐藏内部实现细节  开发速度加快. 苹果官方文档中,有一个配图生动的阐释了封装: @interface用于给人们显

黑马程序员------OC面向对象之多态

-----iOS培训.Android培训.Java培训,期待与您交流----- 一.多态的基本概念 多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述--多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4 编程技术内幕").简单的说,就是一句话:允许将

黑马程序员------OC面向对象之继承

------Android培训.iOS培训.Java培训,期待与您交流----- 一.继承的基本概念 继承是面向的三大特征之一,指的是在一个类的基础上,定义一个新类:原本的类成为父类(基类),新类称为子类(派生类). 生活中,继承的例子也是数不胜数,比如一个儿子继承了他父亲,那么他就享受他父亲的财产了,当然不是全部,详细解释见下文. 再如,一个电器系列: 一层接着一层,电器为父类,下面的洗衣机.电脑.电视机都是电器的子类,下面的品牌名又是洗衣机.电脑.电视机的子类,当然也是电器的子类. 体现在代

黑马程序员-OC面向对象多态笔记

面向对象的多态是建立在继承上,可以说没有继承就没有多态: 多态:父类指针指向了子类的对象: 1 int main() 2 { 3 //假设已定义了Animal类和它的子类Dog,那么多态的代码体现就是 4 Animal *a = [Dog d];//父类指针指向了子类对象 5 6 } 多态的定义是比较简单的,也好理解,关键在于它的指针动态绑定,究竟调用哪个方法: 1 #import <Foundation/Foundation.h> 2 3 //Animal类的声明 4 @interface

黑马程序员——OC面向对象的三大特性

一.面向对象的三大特性:封装(成员变量).继承和多态 1. set方法和get方法 1. set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 2. set方法 1) 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值 2) 命名规范: ? 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写 ? 形参名称不要跟成员变量同名 3

黑马程序员——OC语言继承与多态

一)继承基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). 在这里动物是猫类和狗类的父类,黑猫和白猫类是猫类的子类. >>继承的好处: (1)抽取出了重复的代码 (2)建立了类和类之间的联系 >>继承的缺点: 耦合性太强 二)继承格式 @interface Animal:NSObject //动物里继承了NSObject,获得NSObject类的方法: @e

【黑马程序员】————面向对象语法2

一.      set方法和get方法 1.          set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数 成员变量尽量不要用@public 2.          set方法 1)       作用:提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤 2)       命名规范: 1> 方法名必须以set开头 2> set后面

【黑马程序员】————面向对象语法1

一.  面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 常用术语 面向过程 Procedure Oriented 面向对象 Object Oriented,简称OO 面向对象编程 Object Oriented Programming,简称OOP 二.  类和对象的关系 面向对象中有2个非常重要的概念:类和对象 OC中的面相对象 1)      OC中的类相当于图纸,用来描述一类事物.也就是说,要想创建对象,必须先有类 2)      OC

黑马程序员-OC学习笔记之Foundatio框架集合类

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.OC数组 OC数组是一个类,它也分不可变数组NSArray和可变数组NSMutableArray. 1?不可变数组的创建 // 创建一个不可变数组,元素为一个OC字符串对象 @"小桥" NSArray *array1 = [NSArray arrayWithObject:@"小桥"]; // 创建一个不可变数组,元素为多个O