黑马程序员 10-使用多态的好处和局限性

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

使用多态的好处

如果函数\方法的参数是父类类型,那么父类、子类对象都可以传入。

 1 #import <Foundation/Foundation.h>
 2 //Animal类
 3 @interface Animal : NSObject
 4 - (void)eat;
 5 @end
 6 @implementation Animal
 7 - (void)eat
 8 {
 9     NSLog(@"Animal---吃东西");
10 }
11 @end
12
13 //Dog类
14 @interface Dog : Animal
15 - (void)run;
16 @end
17 @implementation Dog
18 - (void)run
19 {
20     NSLog(@"Dog---跑");
21 }
22 - (void)eat
23 {
24     NSLog(@"Dog---吃");
25 }
26 @end
27
28 //Cat类
29 @interface Cat : Animal
30 - (void)eat;
31 @end
32 @implementation Cat
33 - (void)eat
34 {
35     NSLog(@"Cat---吃");
36 }
37 @end
38
39 //定义一个函数  喂动物
40 void feed(Animal *a)
41 {
42     [a eat];
43 }
44 int main(int argc, const char * argv[])
45 {
46     //函数参数为父类类型,父类和子类对象都可以传入
47     Animal *aa = [Animal new];
48     feed(aa);
49
50
51     Dog *d = [Dog new];
52     feed(d);
53     Cat *c = [Cat new];
54     feed(c);
55
56     //父类对象不能直接调用子类方法,必须强转为子类类型才可以调用子类方法
57     Animal *animal1 = [Dog new];
58     //父类对象不能直接调用子类方法
59     //[animal1 run]
60     Dog *a1 = (Dog *)animal1;
61     [a1 run];
62     return 0;
63 }

局限性:

1>父类类型的变量  不能直接调用子类特有的方法

2>必须强转为子类类型变量后,才可以调用子类特有的方法

时间: 2024-10-07 04:11:53

黑马程序员 10-使用多态的好处和局限性的相关文章

黑马程序员---java基础-----多态、内部类、异常、包

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 第一讲     多态 多态可以理解为事物存在的多种体现形态. 例:动物中猫,狗.猫这个对象对应的类型是猫类型,如:猫 x = new猫();同时猫也是动物中的一种,也可以把猫称为动物.动物  y = new猫();那么动物就是猫和狗具体事

黑马程序员——java基础--多态

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 模板方法设计模式: 解决的办法:当功能内部一部分是现实确定,一部分是现实不确定的,这时间不可把不确定的部分暴漏出去,让子类实现. 实例:统计一个程序的的运行时间 思路:程序的结束时间减去程序的开始时间 abstract class Gettime{ public final void getTime(){//这段功能用final限制 long start = System.currentTim

黑马程序员-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

黑马程序员——Java基础---多态、内部类、异常、包

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

黑马程序员——10 GUI

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.概念:图形用户界面,用于计算机与用户交互的一种方式 2.计算机与用户交互的两种方式:GUI和CLI GUI: Graphical User Interface,图形用户接口,用图形方式,来显示计算机操作界面,方便直观. CLI: Command LineUser Interface,命令行用户接口,即常见的Dos命令行操作,须记住一些命令,操作不直观. 3.java也将这种界面封装为对象,

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

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>.<a href="http://edu.csdn.net"target="blank">.Net培训</a>.期待与您交流! ---------------------- 一多态的前提:(1)要有继承关系(或

黑马程序员 多态

多态:定义:某一事物的多种存在形态.比如说:动物,它有多种存在形态,猫.狗.猪都是动物的具体存在形态,动物是它们的父类,比如猫是动物的一种,同时可以说动物的一种是猫.父类型引用指向了子类对象.1.多态的体现 父类的引用指向了自己的子类对象. 父类的引用也可以接受自己的子类对象.(在下面的 3.多态的好处 最后那段代码有所体现)2.多态的前提 必须是类与类之间有关系.要么继承,要么实现. 通常还有一个前提:存在覆盖.abstract class Animal{ abstract static vo

黑马程序员 面向对象(上) 封住,继承,多态,以及this和super的用法

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* * 一.类的继承: 当多个类出现了相同的属性和行为时,我们可以把这些类中相同的属性和行为抽取出来 成为独立的一个类,然后让这些类分别去继承抽取类,再根据自己需求去实现别的功能 这样大大的增强的相同代码的复用性,也使代码变得美观 我们把这个抽取类叫做这些类的父类,这些类叫做抽取类的子类,子类是可以继承父类中 的所有信息. 在Java中所有的类

黑马程序员:Android N与iOS 10的明争暗斗

在上个月召开的I/O大会上Google透露了关于Android N的诸多新功能,黑马程序员当时对Google在Android系统新特性和新功能进行了较为全面的跟踪介绍.时隔1个月,在刚刚结束的WWDC大会上,苹果推出了iOS 10.对比这两个历来明争暗斗的系统,不少媒体称:Google和苹果抄袭与沿用特性对方的行为更进一步.与此同时,面对两大系统的重磅升级,黑马程序员研发出了最新的课程,并将课程升级到最新版. 透过Android与iOS学院讲师的“比拼与厮杀”,今天就来对比一下新的iOS 10与