展开全部
有时候是不需要转的,但是有时候是必须要转的,比方说你写了32313133353236313431303231363533e4b893e5b19e31333335336537一个类A,继承了ViewGroup并且重写了addView方法,但是你重写的addView方法干的事跟ViewGroup不是一件事(比如ViewGroup的addView是增加一个控件,而你重写的addView方法只是打印了一句话而已),只是凑巧名字一样了而已。你传入的对象是A,如果你不强转,那么编译能通过(因为语法没问题啊),但是运行时效果没出来,那你就得费九牛二虎之力去找问题出哪儿了。如果你加上强转呢?就会报类型转换异常,因为A跟ViewPager是没有继承关系的,那问题是不是一下就找到了呢。给你个例子运行一下就知道了。public class Test {
public static void main(String[] args) {
爹 执行者 = new 小儿子();
Test t1 = new Test();
t1.干大活(执行者);
t1.干小活(执行者);
}
public static void 干大活(爹 执行者) {
//没强转,运行不报错,但活没干了
执行者.干();
}
public static void 干小活(爹 执行者) {
//强转,类型不对就报错,保证活要不被干了,要不就提示说这人不是干活的料
((大儿子)执行者).干();
}
}
class 爹 {
public void 干() {
System.out.println("爹有祖传的方式干活,按这种方式能就能把活干完了...");
}
}
class 大儿子 extends 爹 {
public void 干() {
System.out.println("大儿子有自己的干活方式,跟爹的方式不一样,但是活也干完了...");
}
}
class 小儿子 extends 爹 {
public void 干() {
System.out.println("小儿子挺操蛋的,此干非彼干,正经活没干...");
}
}