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;

    }

    }

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

  • 相关阅读:
    Windows10下Opencv4+CMake+MinGW64+VSC安装教程
    相机标定问题-实践操作流程
    eNSP仿真学习,网络入门!
    SFTP服务的使用!!
    树莓派B+使用入门&RPI库安装&wringPi库安装
    Python基本语法初试
    基于51单片机+DAC0832的信号发生器
    各种标志位的含义
    根文件系统ramdisk.image.gz && uramdisk.image.gz
    Linux中/etc/inittab文件
  • 原文地址:https://www.cnblogs.com/1995-qxl/p/4964258.html
Copyright © 2011-2022 走看看