子类对象自动转换成父类对象,使用instanceof 操作符遇到的问题 1C
            Circle circle1 = new Circle();
            Circle circle2 = new Circle(1.0);
            Circle circle3 = new Circle(2.0,"Black",2.0);

            GeometricObject geometricObject = new GeometricObject();
            TextCircle textCircle = new TextCircle();

            Object c = circle2;
            Object c1 = circle3;
            Object c3 = geometricObject;
            Object c4 = textCircle;

            System.out.println(circle2  instanceof Circle);
            返回值为true

            System.out.println(geometricObject  instanceof Circle);
            返回值为false,父类对象 instanceof 子类名编译和运行不报错。

            System.out.println(textCircle  instanceof Circle);
            编译出错。

            System.out.println(c instanceof Circle);
            返回值为true

            System.out.println(c1 instanceof Circle);
            返回值为true

            System.out.println(c3 instanceof Circle);
            返回值为false

            System.out.println(c4 instanceof Circle);
            编译不出错,返回值为false。

○ c,c1,c3,c4是Object类属性,指向其他类对象的一个对象。instanceof操作符会两者都考虑。

7个回答

这个怎么会报错呢?这个只是个判断语句呀,如果c是Circle的实例就执行语句,不是就不执行花括号内的语句,不会报错的。

Q_W_Q_
黄瓜兄 回复黄瓜兄: 没有父子关系就报错啊。。。
3 年多之前 回复
Q_W_Q_
黄瓜兄 c不是Object类型吗
3 年多之前 回复

instanceof 对比类型

instanceof是Java的二元操作符,用来判断左边的对象是否是右边的类的实例或者子类的实例,返回的是boolean值,不会报错

Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false

instanceof 就是判断这个对象是不是 这个类,你想研究什么?仔细看看你的类继承和构造方法对不对

向上转型后,它原来是什么类型还是什么类型啊,
你不能说Object c = new Circle();
c 就只是Object类型了吧?

instanceof用法:判断是否是特定类的实例或其子类的实例。实例!、、、
你Object c = new Circle();
这个引用变量指向的实例是Circle类型的实例,然后c instanceof Circle为true没毛病

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐