多态中的向上转型和向下转型
Posted ooo888ooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态中的向上转型和向下转型相关的知识,希望对你有一定的参考价值。
package ren.redface.demo; /* * 多态中的向上转型和向下转型: * * 引用类型之间的转换 * 向上转型 * 由小到大(子类型转换成父类型) * 向下转型 * 由大到小 * 基本数据类型的转换 * 自动类型转换 * 由小到大 * byte short char --- int --- long --- float --- double * 强制类型转换 * 由大到小 */ public class MethoDemo { public static void main(String[] args) { Animal2 a = new Dog();//向上转型 //a.eat(); Dog d = (Dog)a;//向下转型 d.swim(); d.eat(); } } class Animal2 { public void eat() { System.out.println("吃东西"); } } class Dog extends Animal2 { public void eat() { System.out.println("啃骨头"); } public void swim() { System.out.println("狗刨"); } }
打印结果:
狗刨
啃骨头
实例二:
package ren.redface.demo;
/*
* 多态的优缺点
* 优点:可以提高可维护性(多态前提所保证的),提高代码的可扩展性
缺点:无法直接访问子类特有的成员
*/
public class MethoDemo { public static void main(String[] args) { MiFactory factory = new MiFactory(); factory.createPhone(new MiNote()); factory.createPhone(new RedMi()); } } class MiFactory { public void createPhone(Phone p) { p.call(); } } interface Phone { public void call(); } //小米Note class MiNote implements Phone{ public void call() { System.out.println("小米Note打电话"); } } //红米 class RedMi implements Phone { public void call() { System.out.println("红米打电话"); } }
打印结果:
小米Note打电话
红米打电话
以上是关于多态中的向上转型和向下转型的主要内容,如果未能解决你的问题,请参考以下文章