安卓基础(强制转换)
一、强制转换(Type Casting)
1. 什么是强制转换?
当你想将一个类型的对象转换为另一个类型时,如果它们之间存在继承关系,就需要强制转换。
注意:只有存在继承关系的类型才能转换(如父类转子类)。
2. 生活例子
- 把水倒进杯子:水(父类)可以装进杯子(子类),但需要明确告知:“这是杯子!”(强制转换)。
3. 代码示例
// 父类
class Animal {void eat() { System.out.println("Animal is eating");}
}// 子类
class Dog extends Animal {void bark() {System.out.println("Dog is barking");}
}// 使用场景
Animal animal = new Dog(); // 向上转型(自动转换)
animal.eat(); // ✅ 正确// 需要调用子类独有的方法,必须强制转换
if (animal instanceof Dog) { // 先检查类型Dog dog = (Dog) animal; // 强制转换dog.bark(); // ✅ 正确
}
4. 强制转换的风险
如果未检查类型直接转换,可能抛出 ClassCastException
:
Animal animal = new Animal();
Dog dog = (Dog) animal; // ❌ 运行时崩溃!animal 不是 Dog 类型