JAVA多态
来源:互联网 发布:手机vr眼睛 软件 编辑:程序博客网 时间:2024/06/11 11:07
多态:
定义:某一类事物的多种存在形态。
如动物中的猫,狗。
猫对象对应的是猫类
猫 a = new 猫();
同时猫也是动物中的一种,也可以把猫称为动物
动物 b = new 猫();
动物是猫和狗具体事物中抽取出来的父类型
父类或者接口的引用指向了其子类对象
下面定义了一个父类Animal 和继承于Animal的三个子类Dog Cat Pig
abstract class Animal //定义了一个动物类,其方法有吃东西{ abstract void eat();}class Dog extends Animal //定义了一个继承于动物类的狗类,其方法有 吃东西 和 看家{ void eat() { System.out.println("啃骨头"); } void lookHome() { System.out.println("看家"); }}class Cat extends Animal //定义了一个继承于动物类的猫类,其方法有 吃东西 和 抓老鼠{ void eat() { System.out.println("吃鱼"); } void catchMouse() { System.out.println("抓老鼠"); }}class Pig extends Animal //定义了一个继承于动物类的猪类,其方法有 吃东西{ void eat() { System.out.println("吃饲料"); }}
当我们分别养了三个动物,狗、猫和猪时。若要对其进行喂食,应该如何编写代码。
class Demo{ static void method(Dog d) //狗类的吃东西函数 { d.eat(); } static void method(Cat c) //猫类的吃东西函数 { c.eat(); } static void method(Pig p) //猪类的吃东西函数 { p.eat(); } public static void main(String[] args) { Dog d = new Dog(); Cat c = new Cat(); Pig p = new Pig(); method(d); method(c); method(p); }}
我们很明显可以看出,上面代码片的三个进食函数相似度很高,执行的都是同一类操作,那么,我们能不能将这三个进食函数合并为一个,从而提高代码复用性呢?
class A{ static void method(Animal a) //吃东西的方法,参数为动物类型 { a.eat(); } public static void main(String[] args) //此时想要让所有动物都去吃东西。 { Animal c = new Cat(); Animal d = new Dog(); Animal p = new Pig(); method(c); method(d); method(p); }}
多态的好处
提高了代码的扩展性,前期定义的代码可以使用后期的内容(如我们以后定义的其他动物类型可以在不改动method函数的情况下,对其进行调用)
多态的弊端
前期定义的代码不能使用后期子类中出现的特有内容
static void method(Animal a) { a.eat(); }
如我们不能在此方法中调用Cat类的catchMouse()方法,因为Animal类不具有该方法。
多态的前提:
1,必须有关系(继承/实现)
2,要有覆盖
阅读全文
0 0
- Java学习 java -- 多态
- java多态
- java多态
- java多态
- java多态
- Java多态
- java多态
- JAVA@多态
- Java多态
- java 多态
- Java多态
- java多态
- [Java] 多态
- JAVA多态
- Java多态
- java多态
- java 多态
- java多态
- OpenGL glTexImage2D 纹理生成函数注意点
- 文章标题
- Greendao.gen使用方法总结
- [bzoj1293][SCOI2009]生日礼物(莫队)
- html基础教程-doctype
- JAVA多态
- Myeclipse如何导出doc文档
- POJ 2187 计算几何之旋转卡壳
- 使用studio将module打包成jar包
- MongoDB学习(一)MongoDB常用命令
- Java获取视频时长、宽高、文件大小、格式、并截图做封面
- Redis数据结构详解之Zset
- 浅谈UI设计师的职业发展
- Spark Streaming(下)--实时流计算Spark Streaming实战