java中downcast向下转型到底有什么用? 举例说明!

What is the point of downcast? (视频下载) (全部书籍)当一个方法只有子类才有,马克-to-win:不是说基类和子类都有,开始时又是基类指针指向派生类,这时就需要downcast, see the following example. after you cast with SubClass,sc is pure SubClass type.

例1.9.1---本章源码 

class SuperClassM_t_w {
    int a;
    SuperClassM_t_w() {
        a = 5;
    }
    public void printAsuper() {
        System.out.println("父类中a =" + a);
    }
}

class SubClass extends SuperClassM_t_w {
    int a;
    SubClass(int a) {
        this.a = a;
    }
    public void printA() {
        System.out.println("子类中a = " + a);
    }
}
public class Test {
    public static void main(String args[]) {
/* note that new SubClass(10) will call SuperClassM_t_w(), default constructor. */
        SuperClassM_t_w s1 = new SubClass(10);
        s1.printAsuper();//基类指针指向派生类时,马克-to-win: 可以用基类指针调用基类仅有的方法, 但不能调用子类仅有的方法。必须向下强转一下。
        // s1.printA();错误
/*
我们不能去掉下面的话,因为SuperClassM_t_w没有printA方法。马 克-to-wi n:we can not comment
the following statement,because SuperClassM_t_w does not have the method
of printA, report error */
        SubClass sc = (SubClass) s1;

。。。。。。。。。。。。。。。。。。。
详情请见:http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/JavaBeginner3_web.html#PointDowncast

原文地址:https://www.cnblogs.com/mark-to-win/p/9693494.html

时间: 2024-08-30 02:31:30

java中downcast向下转型到底有什么用? 举例说明!的相关文章

Java多态之向下转型

目录 Java多态之向下转型 强制类型转换 instanceof Java多态之向下转型 往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父类的方法,在实际运行时,就可以根据子类中重写的方法执行不同的操作.其中有一个弊端,就是在向上转型的过程中,其实丢失了一部分子类特有的功能,毕竟它只允许调用父类中的方法.那么,如何在这时调用子类中的方法呢,这时就需要与向上转型相对应的方法,就是所谓的:向下转型. 向上转型是自动就能完成的,向下转型则需

JAVA中Integer类下的常用方法有哪些?

JAVA中Integer类下的常用方法有哪些?1.进制转换 n进制转10进制 字符串结果 Integer.parseInt(String s, int radix): radix范围为2-36(包括0-9,a-z) string输入为二进制字符串 System.out.println( Integer.parseInt("10000",2)); //16 2.int转二进制字符串 System.out.println( Integer.toBinaryString(789)); //1

java中对象的向上转型和向下转型

1.向上转型: 父类  引用=new 子类(); 问题:无法调用子类有而父类没有的方法 代码演示: //向上转型 public class Demo1 { public static void main(String[] args) { Person p=new Student(); //父类Person也有eat()方法,可以调用 p.eat(); //父类Person没有smile()方法,不能调用 // p.smile(); } } 2.向下转型:可以调用子类地方法,实现多态 子类 引用=

java 向上,向下转型

在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转型,动态绑定 例三:向上转型,静态绑定 例四:向下转型 转型的误区 1.运行信息(RTTI) 2.数组类型 3.Java容器 几个同义词 首先是几组同义词.它们出现在不同的书籍上,这是造成理解混淆的原因之一. 父类/超类/基类 子类/导出类/继承类/派生类 静态绑定/前期绑定 动态绑定/后期绑定/运行时绑定

java 向上转型(upcasting)和向下转型(downcasting)区别举例详解

今天下午小龙在练习instanceof用法时突然想到java的upcating 和 downcasting 好像与此有关联,于是自己写了一个相关的案例,在此与众位看到的亲们分享一下,希望能帮到正在学习的伙伴们. package com.instanceoftest; /**  java向上转型和向下转型,以及用instanceof方法来防止向下转型错误 * 接口说明 *interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final 的,不过在in

何使用派生类指针指向基类,即downcast向下转型?

基类指针指向派生类,我们已经很熟了.(视频下载) (全部书籍)假如我们想用派生类反过来指向基类,就需要有两个要求:1)马克-to-win:基类指针开始时指向派生类,2)我们还需要清清楚楚的转型一下. if you want to use derived class pointer point to base class, there are two requirements: 1) base class pointer is initially the type of the derived c

Java中的HashMap和HashTable到底哪不同?

学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:456544752  我们一起学Java! HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案. 代码版本 JDK每一版本都在改进.本文讨论的HashMap和HashTable基于JDK 1.7.0_67.源码见这里 1. 时间 HashTable产生于JDK 1.1,而HashMap产生

Java中的HashMap和HashTable到底哪不同?(原文参考来自码农网)

HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案. 代码版本 JDK每一版本都在改进.本文讨论的HashMap和HashTable基于JDK 1.7.0_67.源码见这里 1. 时间 HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2.从时间的维度上来看,HashMap要比HashTable出现得晚一些. 2. 作者 以下是HashTable的作者: 以下代码及注释来自ja

java中在linux下利用jstack检测死锁

首先,编写一个死锁程序 1 package deadlock; 2 3 public class testJstack { 4 final static Object resource_1 = new Object(); 5 final static Object resource_2 = new Object(); 6 7 public static void main(String[] args) { 8 Thread t1 = new Thread("t1") { 9 publi