黑马程序员-java多态学习笔记
2013-01-03 21:32
651 查看
------- android培训、java培训、期待与您交流! ----------
J***A多态
多态:可以理解为事务存在的多种体现形态
l 父类的引用也可以接受自己的子类对象
例如
举例说明:电脑运行基于主板,主板上面有声卡,显卡,网卡等等
有了PCI这个接口 无论以后要在主板上加上个什么卡 都可以很容易
![](http://img.my.csdn.net/uploads/201301/03/1357220183_3870.jpg)
在现实生活中接口可以看做是 插座 所有要用电的机器都需要创建一个插头 即:实现
这个接口 就可以运行起来 当然没有插头的电器也可以运行起来 不过很麻烦
在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译报错
在运行时期:参阅对象所属的类中是否有调用的方法
简单的总结就是:成员函数在多态的调用时,编译看左边有木有,运行看右边有木有
l 在多态中,成员变量的特点:
无论编译和运行,都参考左边 即引用类型所属的类
l 在多态中,静态成员函数的特点
静态函数在继承中没有覆盖的情况
无论编译和运行,都参考左边
弊端:通过多态的特点我们发现 多态提高了扩展性,但是只能使用父类引用访问父类中(存在)的成员
J***A多态
多态:可以理解为事务存在的多种体现形态
一、多态的提现:
l 父类的引用指向了自己的子类对象l 父类的引用也可以接受自己的子类对象
例如
Class Animal{ public void eat() { System.out.println(“吃东西”); } } Class Cat extends Animal { Public void catchMouse() { System.out.println(“抓老鼠”); } } Class Dog extends Animal { Public void kanjia() { System.out.println(“看家”); } } Class Demo { Public static void main(String[]args) { Animal c=new Cat(); c.eat();//父类引用指向子类对象 并且 调用子类eat()功能 Cat b=(Cat)c; b.catchMouse();//如果想用c调用子类独有的功能则必须 将c强行转换成b function(new Cat());//父类引用接受子类对象 } Public static void function(Animal a) { a.eat(); } /* Public static void function1(Cat a) { C.eat(); } Public static void function2(Dog d) { d.eat(); } /*很明显 有了function function1和function2都可以省了*/ }
二、多态的前提
必须是类与类之间有关系,或者继承或者实现。通常还会有一个前提:存在覆盖三、多态的好处
多态的出现大大提高了程序的扩展性举例说明:电脑运行基于主板,主板上面有声卡,显卡,网卡等等
Interface PCI//PCI接口 { Public void oper(); Pulblic void close(); } Class Main Board { Public void run() { System.out.print(“mainboard run”); } Public void usePCI(PCI p)//将这个接口 安装到主板上 { P.oper(); P.close(); } } //所有要插在主板上运行的程序都要实现这个接口 Class NetCard implemets PCI { Public void open() { System.out.println(“netcard oper”); } Public void close() { Sysetem.out.println(“netcard close”); } } Class SoundCard implemets PCI { Public void open() { System.out.println(“SoundCard oper”); } Public void close() { Sysetem.out.println(“SoundCard close”); } } Class Demo { Public static void main(String[]args) { Mainboard mb=new MainBoad(); Mb.run(); mb.usePCI(new NetCard()); mb usePCI(new SoundCard ()); } }
有了PCI这个接口 无论以后要在主板上加上个什么卡 都可以很容易
![](http://img.my.csdn.net/uploads/201301/03/1357220183_3870.jpg)
在现实生活中接口可以看做是 插座 所有要用电的机器都需要创建一个插头 即:实现
这个接口 就可以运行起来 当然没有插头的电器也可以运行起来 不过很麻烦
四、多态的特点及弊端
l 在多态中成员函数的特点在编译时期:参阅引用型变量所属的类中是否有调用的方法,如果有,编译通过,如果没有编译报错
在运行时期:参阅对象所属的类中是否有调用的方法
简单的总结就是:成员函数在多态的调用时,编译看左边有木有,运行看右边有木有
l 在多态中,成员变量的特点:
无论编译和运行,都参考左边 即引用类型所属的类
l 在多态中,静态成员函数的特点
静态函数在继承中没有覆盖的情况
无论编译和运行,都参考左边
弊端:通过多态的特点我们发现 多态提高了扩展性,但是只能使用父类引用访问父类中(存在)的成员
相关文章推荐
- 黑马程序员 java学习笔记——面向对象3:多态(含内部类)
- 黑马程序员-Java学习笔记之抽象类,接口,多态和内部类
- 黑马程序员java学习笔记——面向对象的特征封装、继承和多态
- 黑马程序员-自己总结的java学习笔记(5)继承,接口,多态。
- 黑马程序员--Java基础学习笔记【继承、多态】
- 黑马程序员-Java学习笔记之面向对象(多态 在上一篇笔记中)
- 黑马程序员—5—Java基础:多态学习笔记和学习心得体会
- 黑马程序员-------java学习笔记之继承与多态
- 黑马程序员--Java学习笔记之面向对象思想(多态、内部类、匿名内部类、异常类)
- 黑马程序员:java学习笔记-接口和多态
- 黑马程序员——java基础学习笔记——第十一天
- 黑马程序员——java基础学习笔记——第二天
- 黑马程序员—Java基础学习笔记之面向对象
- 黑马程序员 java编程基础学习笔记2
- Java学习笔记-对象-继承-接口-多态-内部类
- 黑马程序员 java学习笔记——集合框架1
- 黑马程序员_Java包装类学习笔记
- 黑马程序员——Java学习笔记之②——“面向对象”
- 黑马程序员------java学习笔记之数据结构
- 黑马程序员-学习笔记之 多态