OC继承和多态

一 :继承

1)类和类之间的关系

2)父类:  Animal

3) 子类: Dog  Cat

4) 子类继承了父类的属性和方法

子类重写父类的方法的时候不用声明父类的方法,因为父类中已经声明了该方法,子类声明中导入了父类的声明。

继承的好处:1>抽取出了重复的代码、2>建立了类和类之间的联系

继承的缺点:耦合性太强,也就是指类和类之间的关联性太强

注意:组合模型和继承之间的区别,及组合模型的优点。

OC语言是单继承语言。在oc语言中,基本上所有类的根类都是NSObject类。

三:继承注意点

OC语法中不允许子类和父类拥有相同名称的成员变量,但允许拥有相同方法

》重写:子类重新实现了父类中的某个方法 (子类中可以不用声明)

》调用对象的某个方法,优先在本类中找,如果没有再到父类中找

》子类可以继承父类的所有的属性和方法,但是注意有一些属性是访问不了的

比如私有属性值,子类访问不了,还要定义在父类.m文件中得属性值和方法,子类也无法访问。

组合性:当某个类拥有另外一个类的属性时,可以让这个类拥有它

提示:每个类中都有一个super class指针,该指针指向自己的父类。对象中有一个isa指针,该指针指向调用该对象的类。

  继承和组合

继承的适用场合:

(1)当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中。

(2)当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类(考虑),在这种情况下,也可以考虑使用组合。

继承:###是xxx,如狗是动物,可以让狗继承动物类

组合:###拥有xxx,如学生有书,可以让书这个类作为学生类的属性

二:多态:基本概念

多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。

在使用多态是,会进行动态检测,以调用真实的对象方法。

多态在代码中的体现即父类指针指向子类对象。

Person *p = [Person new];

[p cry];  //Person

Man *man = [Man new];

[man cry];//Man

Woman *woman = [Woman new];

[woman cry];//Woman

//动态类型:

//OC中允许在程序执行的时候才去确定对象的类型

//用谁new的就是什么类型

//多态

Person *p1 = [Man new];

[p1 cry];

//定义一个方法,传哪个对象,就是哪个对象的哭的方法

[p cryWithObject:woman];

//p ->person

//(Man*)p   ---> Man

Man *m1 = (Man*)p;

//        [m1 test]; //错误的用法 父类无法调用子类特有方法

//p1-->man

//

Man *m2 = (Man*)p1;

[m2 test]; //可以调用

好处:如果函数方法参数中使用的是父类类型,则可以传入父类和子类对象,而不用再去定义多个函数来和相应的类进行匹配了。

局限性:父类类型的变量不能直接调用子类特有的方法,如果必须要调用,则必须强制转换为子类特有的方法。

时间: 2024-10-10 18:19:19

OC继承和多态的相关文章

OC学习篇之---类的三大特性(封装,继承,多态)

之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一.封装 学习过Java中类的同学可能都知道了,封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java

转 OC温故:类的三大特性(封装,继承,多态)

原文标题:OC学习篇之---类的三大特性(封装,继承,多态) 我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一.封装 封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java中有四种访问权限修饰符: 1 public,default,protected,private 访问权限依次递减,这样我们在定义类的时候,哪些字段和方法不想暴露出去,哪些字段和方法可以暴露,可以通过

(转载)OC学习篇之---类的三大特性:封装,继承,多态

之前的一片文章介绍了OC中类的初始化方法和点语法的使用,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一.封装 学习过Java中类的同学可能都知道了,封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java中有四种访问权限修饰符:public,default,protected,private,访问权限一次递减的,这样我们在定义类的时

oc面向对象-封装,继承,多态的用法

面向对象的三大特征 — 封装 (Encapsulation) — 继承 (Inheritance) — 多态 (Polymorphism) 一,封装 1.信息隐藏,隐藏对象的实现细节,不让用户看到. 2.将东西包装在一起,然后以新的完整形式呈现出来. 3.对象同时具有属性和方法两项特性,对象的属性和方法通常被封装在一起,共同体现事物的特性,,二者相辅相承,不能分割 . 4.OC中也有四种访问权限修饰符:@public.@protected.@private.@package. private:私

Objective-C的封装、继承与多态

面向对象有三大特征:封装.继承和多态. 一.封装 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问.简而言之,信息隐藏,隐藏对象的实现细节,不让用户看到,以此来增强安全性和简化编程,进而达到封装的目的. 使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员. 访问修饰符:private.protect.public private:私有的,不可供外部访问的信息,只有类本身能存取. prot

Objective--C三大特性:封装,继承,多态(杂乱的东西)

OC中类的特性共有有三个,它们分别是封装.多态和继承. 1.成员变量的作用域.成员变量的作用域应该也是封装的一种,它对成员变量的作用范围做出了一些限制. @public : 在任何地方都可以直接访问成员变量. @protected:在本类和子类中可以直接访问. @private:只能在本类中访问. @package:在同一个框架内可以访问. 默认情况下在类的声明中定义的成员变量的修饰符是@protected,在类的实现中定义的成员变量的修饰符是@private. 总结:(1)封装是为了保护类中的

论“继承与多态”的重要性

面向对象语言三大特征:封装.继承.多态. 封装:一个类留给外部接口总是小于内部实现的方法. 继承:自雷可以继承父类的字段.属性.方法. 多态:面对同一消息,不同类的对象做出不同的响应. 一.认识继承 (1)生活角度 父类:动物    英雄        人 子类:狗      抗日英雄    中国人 父类          超类        基类 子类          子类        派生类 [继承]也称派生.继承指的是子类继承父类的字段.属性.方法.派生是指子类在父类基础上可以添加自己

java学习中,面向对象的三大特性:封装、继承、多态 以及 super关键字和方法的重写(java 学习中的小记录)

java学习中,面向对象的三大特性:封装.继承.多态 以及 super关键字和方法的重写(java 学习中的小记录) 作者:王可利(Star·星星) 封装     权限修饰符:public 公共的,private 私有的     封装的步骤:          1.使用private 修饰需要封装的成员变量.          2.提供一个公开的方法设置或者访问私有的属性              设置 通过set方法,命名格式:     set属性名();  属性的首字母要大写 访问 通过ge

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

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