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;

    }

    }

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

  • 相关阅读:
    UVA 110 Meta-Loopless Sorts(输出挺麻烦的。。。)
    使用bash判断PATH中是否存在某个路径
    Palindrome(poj3974)(manacher算法)
    Highcharts简介
    android 4.3源码编译
    Unsupervised Feature Learning and Deep Learning(UFLDL) Exercise 总结
    借助Ant工具,实现快速开发
    关于tableView的简单实例
    Matlab单元(Cell)数据的应用
    spring 资源加载使用说明
  • 原文地址:https://www.cnblogs.com/1995-qxl/p/4964258.html
Copyright © 2011-2022 走看看