MUH*_*nc. 5 java casting subclass
如何在java中强制转换两个扩展类?
class B extends Object{
}
class C extends Object{
}
B b = new B();
C c = (C)b;//Cannot cast from B to C
Run Code Online (Sandbox Code Playgroud)
Tho*_*sen 14
你不能.考虑稍微重命名:
class Ford extends Car {
}
class Chevrolet extends Car {
}
Ford ford = new Ford();
Chevrolet chevrolet = (Chevrolet) ford;
Run Code Online (Sandbox Code Playgroud)
然而,两者都是汽车,所以你可以说
Car car = ford;
Run Code Online (Sandbox Code Playgroud)
但不仅仅是那个.
你不能将一个对象投射B到C,因为B它不是 a C,你能推断出的最好结果是它是一个Object。这是另一个类比:
class Animal {
public void eat();
}
class Dog extends Animal {
public void bark();
}
public Cat extends Animal {
public void meow();
}
Run Code Online (Sandbox Code Playgroud)
假设你有:
Cat sprinkles = new Cat();
// this doesn't make sense
Dog aDog = (Dog) sprinkles;
aDog.bark(); // can't do this because sprinkles can't bark()
// but this does
Animal myCat = (Animal) sprinkles;
myCat.eat(); // but it can eat()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16441 次 |
| 最近记录: |