父类对象引用子类对象: Animal a=new Cat();

多态中的转型

public class Animal {
public void eat(){
System.out.println("动物吃东西");
}
} public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
public void playGame(){
System.out.println("猫捉迷藏");
}
} public class test {
public static void main(String[] args) {
//多态
Animal a=new Cat(); //向上转型
a.eat(); //猫吃鱼
//a.playGame(); 会报错
//创建Cat类的对象
Cat b=(Cat)a; //向下转型,来解决多态不能使用子类特有功能的问题
b.eat(); //猫吃鱼
b.playGame(); //猫捉迷藏
}
}

多态转型内存图

1.进入main函数,创建a对象

2.执行eat函数(子类)

3.创建Cat类型变量c将原本堆空间的对象地址赋给它.

4.类型转换异常

27.Java基础_多态的更多相关文章

  1. Java基础十一--多态

    Java基础十一--多态 一.多态定义 简单说:就是一个对象对应着不同类型. 多态在代码中的体现: 父类或者接口的引用指向其子类的对象. /* 对象的多态性. class 动物 {} class 猫 ...

  2. Java基础之多态和泛型浅析

    Java基础之多态和泛型浅析 一.前言: 楼主看了许多资料后,算是对多态和泛型有了一些浅显的理解,这里做一简单总结 二.什么是多态? 多态(Polymorphism)按字面的意思就是“多种状态”.在面 ...

  3. 【Java基础】多态

    首先先来个总结: 什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消 ...

  4. java基础之 多态

    在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP.这也是为什么有人说,使用面向对象语言 ...

  5. 黑马程序员——JAVA基础之多态与Object

    ------- android培训.java培训.期待与您交流! ----------  多态 : 多态定义:  某一类事物的多种存在形态. 多态的体现: 父类的引用指向了自己的子类对象.       ...

  6. Java基础:多态(重载和重写)

    转载请注明出处:jiq•钦's technical Blog (1)域与静态方法 记住"仅仅有普通方法的调用是多态的". 而域和静态方法不是:对于域的訪问.在编译期间就已经进行解析 ...

  7. java基础14 多态(及关键字:instanceof)

    面向对象的三大特征: 1.封装   (将一类属性封装起来,并提供set()和get()方法给其他对象设置和获取值.或者是将一个运算方法封装起来,其他对象需要此种做运算时,给此对象调用) 2.继承   ...

  8. java基础(多态)_03

    一.多态 1.概念:一个对象的多种形态 2.前提: a:必须有继承 b:必须有重写(只有重写才会有意义,没重写语法没错) 3.体现形式: 父类类型 变量名 = new 子类类型(): 4.注意事项: ...

  9. 31.Java基础_日期/日期格式/日历类

    Date类 Date对象构造方法 Date对象常用方法 import java.util.*; public class test { public static void main(String[] ...

随机推荐

  1. Redis专题——Redis管理工具

    一.安全性 1.运行环境 Redis以简洁为美,其安全性没有太多操作,要求在生产系统中外界不能直接连接Redis进行操作,而必须经过程序中转后,由程序进行操作. 即,redis要求运行在可信的环境中. ...

  2. 配置环境变量后不生效,显示缓存的旧jdk版本,解决方案

    本人一直用jdk1.8版本; 今天安装了jdk11版本, 并配置好了jdk11的环境变量JAVA_HOME    :   jdk安装路径bin目录的上级目录PATH    :  %JAVA_HOME% ...

  3. Java哲学家进餐问题|多线程

    Java实验三 多线程 哲学家进餐问题: 5个哲学家共用一张圆桌,分别坐在周围的5张椅子上, 在圆桌上有5个碗和5只筷子(注意是5只筷子,不是5双), 碗和筷子交替排列.他们的生活方式是交替地进行思考 ...

  4. 166. 数独 dancing links 方法

    dfs硬怼通过数独 N皇后的代码后 想学习下新的数据结构和算法来解决这类覆盖问题 习题练习 https://www.acwing.com/problem/content/168/ 数独 https:/ ...

  5. 挑战编程 uva100 3n+1

    挑战编程 刘汝佳 的第一道习题  热身题 熟悉下提交格式 题意 #include <iostream> #include <algorithm> using namespace ...

  6. 【ECNU77】位与数对个数(数位DP)

    点此看题面 大致题意: 求\(\sum_{x=0}^{a-1}\sum_{y=0}^{b-1}[(x\&y)<k]\). 数位\(DP\) 显然数位\(DP\)吧. 我们设\(f_{n, ...

  7. 使用ArcPy拓扑检查的基本步骤

    拓扑检查是GIS的特性,在ArcGIS可使用多种方法进行检查,包括: 1.在数据集上右键按向导建立: 2.使用拓扑工具箱的一系列工具分步建立: 3.创建模型工具,制作专门的拓扑工具: 4.利用ArcP ...

  8. Tensorflow.nn 核心模块详解

    看过前面的例子,会发现实现深度神经网络需要使用 tensorflow.nn 这个核心模块.我们通过源码来一探究竟. # Copyright 2015 Google Inc. All Rights Re ...

  9. SpringBoot实现登陆

    1.依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...

  10. springboot-热部署Jrebel

    1. 场景描述 介绍下idea+springboot下的热部署插件-Jrebel,贼好用,以前用过好多种,但是总出现不稳定或者会莫名其妙的没有部署新代码. 2.解决方案 springboot自带的de ...