翻开《Thinking in Java SE》,看完类成语声明类型之后,兴趣所致,翻开第七章,重温“多态”(Polymorphism)。

《Thinking in Java SE》第七章——“多态”的重温

所谓“多态”:继承机制允许你不但能将某个对象以其本身型别视之,亦能以其基础型别(base type)视之,多态打算除去型别之间的耦合关系。(原文)

向上转型(Upcasting):可以Upcasting但不可以Downcasting。

例:(upcasting)
     class A() {   
         public void play() {
             System.out.println("A is playing!");
         }
     }

class B() {
         public void play() {
             System.out.println("A is playing!");
         }
     }

public class Test() {
        public static void tune(A a) {
            a.play();
        }
        public static void main(Stiring[] args) {
            A a=new A();
            B b=new B();
            tune(a);
            tune(b);  // upcasting,tune()方法需要一个A类型对象,而这里缺给出一个B类型对象,于是B类型对象自动向上转型为A类型对象,因为B继承自A,B是一个A
         }
      }

例:(downcasting)

import java.util.*;
  public class TestArrayList() {
       public static void main(String[] args) {
           ArrayList al=new ArrayList();
           String s="a";
           al01.add(s);
           al01.add("b");
           al01.add("c");
           //!~ ArrayList al02=al.clone(); error,因为clone()返回一个Object对象,Object是ArrayList的base class,不能让Object downcasting为一个ArrayList。
          ArrayList al02=(ArrayList)al.clone();  // 可行,用()进行了强制类型转换
       }
    }

转载于:https://www.cnblogs.com/johnny/archive/2004/06/19/17083.html

关于“绑定(binding)”技术相关推荐

  1. JS Binding 技术(1)

    背景 Lynx 作为一个基于 JavaScript 语言(后续简称 JS )的跨平台开发框架,与 JS 的通信是"与生俱来"的,框架和 JS 引擎打交道是必不可少的能力.JS 引擎 ...

  2. WPF入门(一)——绑定Binding

    实现WPF界面控件属性与后台数据属性绑定. 建立解决方案如下: MainWindow添加 一个ListView,显示List,添加绑定语句:  ItemsSource="{Binding T ...

  3. linux服务器多网卡聚合,linux多网卡绑定聚合-bond技术

    网卡bond可以把多张网卡绑定为一个逻辑网卡,实现网卡的冗余,带宽扩容和负载均衡,会大幅度提升服务器的网络吞吐(I/O). bond模式: 1.Mode=0(balance-rr) 表示负载分担rou ...

  4. ARP静态绑定技术-快速绑定

    1.1概述 ARP静态绑定技术固然好,但现实环境中这么多主机,该如何有效应用这么好的技术呢? 本期文章向各位小伙总结华三.华为设备ARP静态快速绑定方式,希望各位小伙伴有所收获. 1.2关键词 arp ...

  5. 深入理解Nginx:java业务逻辑层都用什么技术

    前言 蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员 ...

  6. android——databinding中字符串的拼接处理、TextView显示的值随activity的属性值改变同时改变--LiveData、双向绑定过滤器、监听某个值的改变

    简介 使用的技术是观察者与被观察者的模式,在google推荐的案例中也有使用到,现在我把它封装成一个扩展函数,使得使用更加简单明了 注意 1.在build.gradle添加databinding,在a ...

  7. C#语言入门、xamarin基础、.NET MAUI全栈开发技术综合笔记

    文章目录 前言: 一.C#语言入门 1.类 类的三大成员 属性(Property) 方法(Method) 事件(Event) 2.静态成员与实例成员 3.类型.变量和方法 3.1类型(Type) 3. ...

  8. 研发4面真题解析(Java岗):和阿里大佬的技术面谈,隔壁都馋哭了

    说在前面 已经到了月中旬了,程序员们即将迎来面试季,今天刚好有一位粉丝找到我,他上周刚面完奇虎360,经过了几轮的面试,最后薪资也谈了,今天主要是问我想这样的大型互联网公司一般多久会正式下offer. ...

  9. ZigBee技术简介,以及ZigBee的未来展望

    ZigBee技术简介,以及ZigBee的未来展望 本文从ZigBee的发展历史入手,探讨了这种基于无线传感器技术的网络应用的协议栈.性能分析和各种应用领域,全面构建了完整的ZigBee技术应用与发展蓝 ...

  10. c++ gdb 绑定源码_第18篇:C++ 静态绑定和动态绑定

    编译程序时,C ++编译器对源代码中的每个语句转换为一行或多行机器语言. 我们从之前的汇编基础系列和内存管理文章中,已经知道每行机器语言都有其自己的唯一的顺序地址. 由于函数也是一个数据对象,它也将转 ...

最新文章

  1. 田野中科院计算机网络信息中心,中国科学院
  2. python适合零基础学习吗-Python适合不适合零基础学习呢?老男孩教育
  3. 利用74LS138实现4-16译码器,并在QuartusⅡ上进行仿真
  4. html文件本质上是一个,html文件是什么
  5. zabbixproxy安装
  6. 2.自定义变量调节器
  7. android应用开发(23)---处理Activity状态更改
  8. Statement和PreparedStatement的区别
  9. Win10 wifi、蓝牙打不开
  10. 怎么锁定计算机的ip地址,电脑静态ip地址怎么设置
  11. tkinter打包为exe后找不到图片 tkinter_TclError:couldn‘t open “a.png“ no such file or directory
  12. ffmpeg MP3转wav
  13. FRS.0020The subservice has not been subscribed.解决方案
  14. win10系统怎么安装ie11
  15. 百万亚瑟王无法连接服务器请在信号良好的地方重试,叛逆性百万亚瑟王
  16. 使用EDU邮箱申请JetBrains学生包免费使用一年JetBrains全家桶
  17. 【MySQL系列】数据结构详解(全网最全)
  18. 03Java常用API-17. 日期格式化类SimpleDateFormat
  19. 如何实现移动端点击下拉箭头显示全部文字
  20. oop 编程是什么?

热门文章

  1. element icon图标方向旋转
  2. js 正则表达式判断价格
  3. TP5.1 查询数据库中上一条和下一条记录
  4. ClassNotFoundException
  5. no number java_java.lang.NumberFormatException问题!!!
  6. cobbler命令_使用Cobbler批量部署Linux和Windows:Windows系统批量安装(三)
  7. linux下dns劫持C语言实现,Linux下实现劫持系统调用的总结(上)--代码及实现
  8. b+树时间复杂度_满二叉树、完全二叉树、二叉搜索树、平衡二叉树
  9. spark如何防止内存溢出_什么叫内存溢出?内存泄漏的定义又是什么?使用中如何避免?...
  10. thymeleaf比较符号问题