向上转型 将子类对象当作父类对象     子类对象------>父类对象

先实例化子类

父类 父类对象 = 子类实例

package test2;
class Father{
    public void fun1(){
        System.out.println("A---------fun 1");

    }
    public void fun2(){
        this.fun1();;
    }
}
class Sun extends Father{
    public void fun1(){
        System.out.println("B---------fun 1");

    }
    public void fun3(){
        System.out.println("B---------fun 3");

    }
}

public class PolDemo02 {
    public static void main(String args[]){
        Sun b = new Sun();           //实例化子类 b
        Father a= b;                 //父类 父类对象= 子类
        a.fun1();                    //父类对象调用是险
    }                                //发生了向上转型,则一定调用的是被子类覆写的对象,同时 此时的a对象是无法调用fun3()的因为
                                     //此方法只在子类中,所以要调用fun3(),肯定要实例化子类,所以,可以将对象向下转型。
}

向下转型

将父类对象当做子类对象           子类  子类对象  =  (子类)父类实例。

package test2;
class Father{
    public void fun1(){
        System.out.println("A---------fun 1");

    }
    public void fun2(){
        this.fun1();;
    }
}
class Sun extends Father{
    public void fun1(){
        System.out.println("B---------fun 1");

    }
    public void fun3(){
        System.out.println("B---------fun 3");

    }
}

public class PolDemo02 {
    public static void main(String args[]){
        Father a = new Sun();        //此时 先由new 一个子对象,然后由A a =  new b()发生向上转型,  子类--------> 父类
        Sun b =  (Sun)a;             //  子类    子类对象  =  (子类)父类对象     父类---------->子类 此时发生了向下转型关系
        b.fun1();                    //父类类型调用fun1()此时 调用的方法是发生覆写过的
        b.fun2();                    //调用父类方法
        b.fun3();                    //调用子类自己定义的方法
    }
}

在进行对象的向下转型之间,必须先发生向上转型,

父类用其自己实例化自己的对象,但是他并不知道谁是自己的子类,,所以再发生向下转型时,需要先发生向上转型 ,及A a =  New B() ,将父类和子类之间建立关系。

java 多态 向上 向下转型的更多相关文章

  1. Java多态之向下转型

    目录 Java多态之向下转型 强制类型转换 instanceof Java多态之向下转型 往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父 ...

  2. 重写 final关键字 多态调用子类特有的属性及行为(向上向下转型)

    1.override 重写:在继承中,子类与父类方法名相同,参数列表相同,的方法叫重写,与返回值有关;  主要应用于系统升级. 2.final 关键字: 可修饰:1.类-->被修饰后该类不能被继 ...

  3. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

    任何类都是object类的子类 用object对象接收数组 object类的向上向下转型

  4. java多态-向上转型和向下转型

    向上转型:符合“is a”,是安全的,子类向上到父类,多余的属性和方法会丢弃 向下转型:不安全的,用instanceof提前判断一下,以免抛出异常 instanceof用法: result = obj ...

  5. java基础值向上向下转型

    1.父类引用可以指向子类对象,子类引用不能指向父类对象. 2.向上转型:子类引用的对象转换为父类类型称为向上转型,把子类对象直接赋给父类引用叫upcasting,向上转型不用强制转型(类似于低精度赋给 ...

  6. java中的向下转型

    1.父类对象可以强制转换为子类对象,但是前提是此父类对象为子类对象实例化的结果. e.g. Fruit fruit=new Apple(); Apple a=(Apple)fruit;//ok e.g ...

  7. java 多态 向上造型

    最近在读java 编程思想,在读多态一章时,遇到了一个问题,在此记录一下. 1 package main.demo; 2 3 class Super{ 4 public int filed =0; 5 ...

  8. java中downcast向下转型到底有什么用

    What is the point of downcast? 当一个方法只有子类才有,马克-to-win:不是说基类和子类都有,开始时又是基类指针指向派生类,这时就需要downcast, see th ...

  9. 多态Poly中的向上/下转型 Upcast/Downcast

    [参考资料]马克-to-win java中多态polymorphism,向上转型和动态方法调度有什么用? java中什么叫多态,动态方法调度(dynamic method dispatch)? jav ...

随机推荐

  1. 《数据库MySQL》

    <数据库MySQL> 一.题目要求 下载附件中的world.sql.zip, 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECDB,导入 ...

  2. CMDB服务器管理系统【s5day89】:深入理解Java的接口和抽象类

    对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用, ...

  3. 第二节:深入剖析Thread的五大方法、数据槽、内存栅栏。

    一. Thread及其五大方法 Thread是.Net最早的多线程处理方式,它出现在.Net1.0时代,虽然现在已逐渐被微软所抛弃,微软强烈推荐使用Task(后面章节介绍),但从多线程完整性的角度上来 ...

  4. mysql/mariadb主从复制

    主从复制简介 MySQL数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MySQL数据库支持单向.双向.链式级联, ...

  5. 33. Springboot 系列 原生方式引入Redis,非RedisTemplate

     0.pom.xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis&l ...

  6. js中escape对应的C#解码函数 UrlDecode

    js中escape对应的C#解码函数 System.Web.HttpUtility.UrlDecode(s),使用过程中有以下几点需要注意   js中escape对应的C#解码函数 System.We ...

  7. Spring Cloud 2-Ribbon 客户端负载均衡(二)

    Spring Cloud Eureka  1.Hello-Service服务端配置 pom.xml application.yml 启动两个service 2.Ribbon客户端配置 pom.xml ...

  8. ES6 + Webpack + React + Babel 如何在低版本浏览器上愉快的玩耍

    https://blog.csdn.net/a324539017/article/details/52824189

  9. from中buttone 和 input type="button" 区别

    在做一个表单提交时碰到的问题, 1.js判断阻止表单提交,如果是form 里面的button的话,恭喜你,你要再换个写法了.<button type="submit" ... ...

  10. ActiveMQ之topic主题模式

    开发环境我们使用的是ActiveMQ 5.11.1 Release的Windows版,官网最新版是ActiveMQ 5.12.0 Release,大家可以自行下载,下载地址.需要注意的是,开发时候,要 ...