一、多态的定义

同一事物,在不同时刻体现出不同状态。

例如:水在不同状态可能是:气态、液态、固态。

二、多态前提和体现

1、有继承关系

2、有方法重写

3、有父类引用指向子类对象

三、编译运行原理

1、编译看左边,父类是否有此方法,没有就报错。

2、运行看右边,运行结果一般是右边子类重写后的结果。

四、案例分析

 package polymorphic;
/**
* 多态案例1,基础
* @author zhongfg
* @date 2015-06-16
*/
interface Car { public abstract String getName(); public abstract int getPrice();
} class Benz implements Car { @Override
public String getName() {
// TODO Auto-generated method stub
return "BENZ";
} @Override
public int getPrice() {
// TODO Auto-generated method stub
return 300000;
} } class Bmw implements Car { @Override
public String getName() {
// TODO Auto-generated method stub
return "BMW";
} @Override
public int getPrice() {
// TODO Auto-generated method stub
return 250000;
} } class CarShop { public void carInfo(Car car){
System.out.println("品牌:"+car.getName()+",价格:"+car.getPrice());
}
} public class PolymorphicDemo {
public static void main(String[] args) { CarShop cs = new CarShop();
//传递的是Benz的对象
Car car = new Benz();
cs.carInfo(car); //传递的是Bmw的对象
car = new Bmw();
cs.carInfo(car);
}
} 运行结果:
品牌:BENZ,价格:300000
品牌:BMW,价格:250000
 package polymorphic;
/**
* 多态案例2,转型问题
* @author zhongfg
* @date 2015-06-16
*/
abstract class Animal { public abstract void eat();
} class Dog extends Animal { public void eat(){
System.out.println("狗吃肉");
} public void lookDoor(){
System.out.println("狗看门");
}
} class Cat extends Animal { public void eat() {
System.out.println("猫吃鱼");
} public void playGram() {
System.out.println("猫玩游戏");
}
} public class PolymorphicTest { public static void main(String[] args) {
//内存中是狗,向上转型
Animal a = new Dog();
a.eat();
//向下转型
Dog d = (Dog)a;
d.lookDoor(); System.out.println("------------------"); //内存中是猫,向上转型
a = new Cat();
a.eat();
//向下转型
Cat c = (Cat)a;
c.playGram(); //java.lang.ClassCastException,内存中的猫不能转换成狗
// Dog d2 = (Dog)a;
}
} 运行结果:
狗吃肉
狗看门
------------------
猫吃鱼
猫玩游戏

Java多态案例分析的更多相关文章

  1. Java虚拟机类加载机制——案例分析

    转载: Java虚拟机类加载机制--案例分析   在<Java虚拟机类加载机制>一文中详细阐述了类加载的过程,并举了几个例子进行了简要分析,在文章的最后留了一个悬念给各位,这里来揭开这个悬 ...

  2. Java内存泄漏分析系列之五:常见的Thread Dump日志案例分析

    原文地址:http://www.javatang.com 症状及解决方案 下面列出几种常见的症状即对应的解决方案: CPU占用率很高,响应很慢 按照<Java内存泄漏分析系列之一:使用jstac ...

  3. 《深入理解Java虚拟机》-----第5章 jvm调优案例分析与实战

    案例分析 高性能硬件上的程序部署策略 例 如 ,一个15万PV/天左右的在线文档类型网站最近更换了硬件系统,新的硬件为4个CPU.16GB物理内存,操作系统为64位CentOS 5.4 , Resin ...

  4. Java多态面试题案例几解题思路

    ---恢复内容开始--- Java多态面试题案例几解题思路 这道题是来自别人,先开始看到题很懵,后来有自己的思路: class A { public String show(D obj){ retur ...

  5. java代码实现highchart与数据库数据结合完整案例分析(二)---折线图

    作者原创:未经博主允许不许转载 在上一篇的博客中,展示和分析了如何做一个饼状图,有疑问可以参考上一篇博客. 现在分析和展示折线图的绘制和案例分析, 先展示效果图: 与饼状图不同的是,折线图展现更多的数 ...

  6. Java 实验案例(多态)

    实验任务 任务一:图形面积周长计算小程序 任务二:饲养员喂养动物程序 实验内容: 任务一: 图形面积周长计算 任务目的: 掌握多态的含义及应用场合 掌握上转型对象和多态的实现 掌握abstract关键 ...

  7. Java设计模式—门面模式(带案例分析)

    1.门面模式的定义: 门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下:       要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式 ...

  8. java 并发基础,及案例分析

    对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了,然而并发问题是令我们大多数程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们深入研 ...

  9. Java多线程——线程八锁案例分析

    Java多线程——线程八锁案例分析 摘要:本文主要学习了多线程并发中的一些案例. 部分内容来自以下博客: https://blog.csdn.net/dyt443733328/article/deta ...

随机推荐

  1. 在ubuntu12.04中安装wine和source insight

    1.安装wine sudo apt-get install wine 2.安装source insight 将source insight安装的可运行文件拷贝到ubuntu中.我拷贝到了~/Deskt ...

  2. gzip解压和压缩

    我发现网上很少有这样完整例子,加上英文有不好,走了好多弯路.我现在把从网上找到例子帖出来,可以解压HTTP gzip的 #include <stdlib.h> #include <s ...

  3. ES6里关于字符串的拓展

    一.子串识别 自从 JS 引入了 indexOf() 方法,开发者们就使用它来识别字符串是否存在于其它字符串中.ES6 包含了以下三个方法来满足这类需求: 1.includes():该方法在给定文本存 ...

  4. 【Hive】Hive 安装&使用基础

    2 安装 2.1 参考 2.1.1 下载 2.1.1.1 https://mirrors.tuna.tsinghua.edu.cn/apache/hive/stable-2/ 2.1.2 安装指导 2 ...

  5. ASP.NET MVC学习---(五)MVC初体验

    经过之前n多的铺垫 我们已经大概了解了这个姓m名vc的家伙了 那么今天我们就来体验一把 怎么体验呢? 就来做一个小例子吧~ mvc增删改查的例子 数据库还是之前我们的老朋友 关系图: 表中的数据已填好 ...

  6. [WCF菜鸟]什么是WCF

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

  7. ajty

    ] .Tag //; ].Columns["NodeID"].ColumnName ; ].Tag)["NodeID"]; //(DataRow)row[&qu ...

  8. iOS_block代码块

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  9. python数据类型整理

    Python中常见的数据结构可以统称为容器(container).序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 一.序列(列表.元组和字符串) 序列中的每个元素都有自己的编 ...

  10. python pip install error

    使用pip install的时候报错 解决方法是使用如下的命令进行安装 python -m pip install sqlalchemy 升级pip的命令python2 -m pip install ...