C x1=new B(
时间: 2023-09-24 13:11:29 浏览: 65
C x1=new B() 这个语句是不正确的。因为 C 类型是 B 类型的父类,而 B 类型是 C 类型的子类,所以将 B 类型的对象赋值给 C 类型的变量是不允许的。这样的转换只能通过强制类型转换来实现,如下所示:
```
B b = new B();
C c = (C) b;
```
但是,上述代码在运行时会抛出 ClassCastException 异常,因为 B 类型的对象无法转换为 C 类型。
相关问题
设类B是类C的父类,下列声明对象x1的语句中不正确的是? A. B x1 = new B( ); B. B x1=new C( ); C. C x1 = new C( ); D. C x1=new B( );
非常抱歉,我的上一个回答错误了。正确答案是B。在Java中,父类的引用变量可以指向子类的对象,但子类的引用变量不能指向父类的对象。因此,选项A、C和D都是正确的,而选项B是错误的。
在选项A中,B类型的引用变量x1指向B类型的对象。
在选项C中,C类型的引用变量x1指向C类型的对象。
在选项D中,C类型是B类型的子类,因此C类型的引用变量x1可以指向B类型的对象。
但是,在选项B中,B类型的引用变量x1指向C类型的对象,这是不正确的,因为父类的引用变量不能访问子类的成员,而C类型是B类型的子类,它可能会包含B类型没有的成员,这样就会导致编译错误。
已知类定义如下: public class t{ int x; public void change(t x){ x.x=x; } } 如果外部执行 t x1=new t(); x1.x=20; t x2=new t(); x2.x=10 x1.change(x2); System.out.println(x1.x+" "+x2.x); 输出结果是? A. 10 10 B. 20 10 C. 程序编译出错 D. 10 20
程序会输出 "10 10"。原因是在执行 `x1.change(x2)` 的时候,传递的是 x2 的引用,即 x1 和 x2 指向了同一个对象。在 `x1.change(x2)` 方法中,将 `x.x` 赋值为 `x`,即将 `x1.x` 的值赋为了 `x2` 的引用,因此 `x1.x` 和 `x2.x` 的值都变成了 10。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)