黑马程序员——Java基础-多态
来源:互联网 发布:json.parse 字符串 编辑:程序博客网 时间:2024/06/11 17:31
------- android培训、java培训、期待与您交流! ----------
多态
允许不同类的对象对同一消息做出响应,即同一消息可以根据发送对象的不同采用不同的行为方式。例如:定义一个动物进食方法,这个方法可以接收动物对象的调用,猫调用这个方法是吃鱼,狗调用这个方法是啃骨头。
1.多态的体现
父类的引用指向了自己的子类对象
父类的引用也可以接收自己的子类对象
2.多态的前提
必须是类与类之间有关系,要么继承,要么实现
通常还有一个前提,存在覆盖
3.多态的好处
多态的先大大的提高了代码的扩展性
4.多态的弊端
提高了扩展性,但是只能使用父类的引用访问父类中的成员
通过继承实现多态
class Animal{void eat(){System.out.println("Animal eat");}}class Cat extends Animal{void eat()//覆盖父类方法{System.out.println("Cat eat");}void catchMouse()//特有方法{System.out.println("Cat catchMouse");}}class DuoTaiDemo{ public static void main(String[] args) { Animal a=new Cat();//类型提升,向上转型。(byte b=2,int x=b,b转为int型) a.eat(); //如果想要调用猫的特有方法时,如何操作? //强制将父类的引用转成子类类型,向下转型。 Cat c=(Cat)a;//向下转型。 c.catchMouse(); //千万不要出现这样的操作,就是将父类对象转成子类类型。 //我们能转换的是父类引用指向了自己的子类对象时,该引用可以被提升,也可以被强制转换。 //多态自始至终都是子类对象在做着变化。//Animal a=new Animal();//Cat c=(Cat)a;不行,动物不能转成猫 //对象多态的实现自始至终都是子类对象在变化 //Animal a=new Animal();这里的a是自己的对象 //Animal a=new Cat();这里的a是子类的引用 }}
通过接口实现多态
interface PCI//PCI插槽是连接主板和各种功能卡的接口{ public void open(); public void close();}class MainBoard{ public void run() { System.out.println("MainBoard run"); } public void usePCI(PCI p)//主板通过PCI插槽来扩充功能 { if(p!=null) { p.open(); p.close(); } } }class NetCard implements PCI{ public void open()//重写接口方法 { System.out.println("netcard open"); } public void close()//重写接口方法 { System.out.println("netcard close"); }}class SoundCard implements PCI{ public void open()//重写接口方法 { System.out.println("soundcard open"); } public void close()//重写接口方法 { System.out.println("soundcard close"); }}class DuoTaiDemo{ public static void main (String[] args) { MainBoard mb=new MainBoard(); mb.run(); mb.usePCI(null); mb.usePCI(new NetCard());//匿名对象相当于PCI p=new NetCard(),将p传入 mb.usePCI(new SoundCard());//PCI p接收将其实现的子类对象 }}
0 0
- 黑马程序员——Java基础--多态
- 黑马程序员——Java基础-多态
- 黑马程序员——Java 基础:多态
- 黑马程序员—JAVA基础
- 黑马程序员—Java基础
- 黑马程序员—Java基础:初识Java
- 黑马程序员——java编程基础
- 黑马程序员——Java编程基础
- 黑马程序员——java编程基础
- 黑马程序员——JAVA基础编程
- 黑马程序员——java基础
- 黑马程序员——java基础概述
- 黑马程序员——java基础小结
- 黑马程序员——java编程基础
- 黑马程序员——Java基础
- 黑马程序员——Java基础---多线程
- 黑马程序员——Java基础---集合
- 黑马程序员——Java基础---GUI
- 色彩基础
- [c]sdnuoj1168 二分和后序遍历的简单应用
- [Android] How to import library into android studio
- 第66讲scala 中伴生对象的隐式转换
- ngx_radix_tree基数树
- 黑马程序员——Java基础-多态
- Font Awesome 字体的以及 图标的使用总结
- php 获得ip地址
- 两个队列实现一个栈
- AD技巧之通过Excel快速制作原理图库
- 木棍问题
- PF_INET
- HDU 3376 Matrix Again(费用流)
- 将nginx配置成url_hash转发方式