zoukankan      html  css  js  c++  java
  • 怎样判断对象是否可以转换?

      可以使用instanceof运算符判断一个对象是否可以转换为指定的类型:
    Object obj="Hello";
    if(obj instanceof String)
     System.out.println("obj对象可以被转换为字符串");

    下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?
      m=d;
      d=m;
      d=(Dog)m;
      d=c;(子类是否能给子类赋值)
      c=(Cat)m;

    源代码:

    class Mammal{}

    class Dog extends Mammal {}

    class Cat extends Mammal{}

    public class TestCast

    {

    public static void main(String args[])

    {

    Mammal m;

    Dog d=new Dog();

    Cat c=new Cat();

    m=d;//子类d可以给父类m赋值

    //d=m;

    d=(Dog)m;

    //d=c;//false

    //c=(Cat)m;

    }

    原因:子类对象可以直接赋给基类变量。

    //d=m;改为d=m;时运行结果如下:

    原因分析:子类对象可以直接赋给基类变量。基类对象要赋给子类对象变量,必须执行类型转换

    //d=c; 改为d=c;时报错,运行结果如下:

    原因分析:基类对象要赋给子类对象变量,必须执行类型转换,其语法是:子类对象变量=(子类名)基类对象名;

    更改后的代码如下:

    class Mammal{}

    class Dog extends Mammal {}

    class Cat extends Mammal{}

    public class TestCast

    {

    public static void main(String args[])

    {

    Mammal m;

    Dog d=new Dog();

    Cat c=new Cat();

    m=d;//子类d可以给父类m赋值

            d=m;

    d=(Dog)m;

    //d=c;//false 子类不可以给子类赋值

    c=(Cat)m;

    }

    }

    更改之后编译并没有报错,因为没有输出语句,所以没有输出。

  • 相关阅读:
    动态联编学习:一、多态性和动态联编
    客户信用评分参考
    top、postop、scrolltop、scrollHeight、offsetHeight
    XPath 简单语法
    系统表
    彩信MO,MT的业务流程
    Short Message Peer to Peer
    解决IIS中网站按浏览没反应问题
    比较详细的win2003 IIS6.0 301重定向带参数的问题解决方法
    Fleaphp函数用法举例
  • 原文地址:https://www.cnblogs.com/1995-qxl/p/4964258.html
Copyright © 2011-2022 走看看