zoukankan      html  css  js  c++  java
  • 运行时多态的三原则:(应用时为覆盖)

     

    1、    对象不变;(改变的是主观认识)

    2、          对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。

    在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。

    注意:编译时类型一定要为运行时类型的父类(或者同类型)。

    对于语句:Dog d=(Dog)a。将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。注意:a和d指向同一对象。

    3、          在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。

     

    关系运算符:instanceof

    a  instanceof Animal;(这个式子的结果是一个布尔表达式)

    a为对象变量,Animal是类名。

    上面语句是判定a是否可以贴Animal标签。如果可以贴则返回true,否则返回false

    在上面的题目中: a instanceof Animal返回 True

                     a instanceof Dog也返回 True

    instanceof用于判定是否将前面的对象变量赋值后边的类名。

    Instanceof一般用于在强制类型转换之前判定变量是否可以强制转换。

     

    如果Animal a=new Animal()

    Dog d=Dog()a;

    此时编译无误,但运行则会报错。

     

    Animal a=new Dog()相当于下面语句的功能:

    Animal a=getAnimal()

    Public static Animal.getAnimal;

    Return new Dog()

  • 相关阅读:
    使用JAX-WS(JWS)发布WebService(一)
    PING命令与ICMP协议
    子网划分和无分类编址
    谈谈网络分层和IP
    hydra暴力破解ssh服务器密码
    TCP报文解析
    OSI七层协议与TCP连接
    Java Native Interface调用C++代码
    Java的序列化和反序列化
    Java关于static的作用
  • 原文地址:https://www.cnblogs.com/borter/p/10743976.html
Copyright © 2011-2022 走看看