public class Test
{
public static void main(String[] args)
{
A a = new C();
B b =(B)a;//这里应该怎样理解 如果是转换a引用里的对象 那么完全可以省略(B) 但是省略会出错误 如果只是将a由A类型转换到B类型 那么这里理解不过去 A B没有关系啊 关键是 强制类型转换 是将引用换个类型呢??还是将里面的对象换个类型呢 ?? 但是对象不可变啊!!!!!!!!
}
} class A
{}
interface B
{}
class C extends implements B
{}
{
public static void main(String[] args)
{
A a = new C();
B b =(B)a;//这里应该怎样理解 如果是转换a引用里的对象 那么完全可以省略(B) 但是省略会出错误 如果只是将a由A类型转换到B类型 那么这里理解不过去 A B没有关系啊 关键是 强制类型转换 是将引用换个类型呢??还是将里面的对象换个类型呢 ?? 但是对象不可变啊!!!!!!!!
}
} class A
{}
interface B
{}
class C extends implements B
{}
所以A a = new C(); 这一条通过。
B b = (B)a; 这一句
你可以分成两条语句看:
1. C c = (C)a;//C继承自A,可以强制转换2. B b = (B)c;/C实现了B,可以转换。
class A
{}
interface B
{}
class C extends A implements B
{}
A a = new C();
B b =(B)a;
// 通过C类构造一个A类型的对象(因为C类继承自A类)。又将A类的对象a强制转换为类接口类型B,这里转换是理所当然
// 的呀,因为C类实现了B接口啊!