class A{
}
class B extends A {
}
向下转型:
A a = new B();
B b = (B)a;
直接调用子类:
B b = new B();
这两个 b 实例 有什么区别
class A{
}
class B extends A {
}
向下转型:
A a = new B();
B b = (B)a;
直接调用子类:
B b = new B();
这两个 b 实例 有什么区别
收起
实现的功能没有区别。但是维护起来就不如第一个。
第一个是父类引用指向之类对象。可以降低程序的耦合性,即调用者不必关心调用的是哪个对象,只需要针对接口编程就可以了,被调用者对于调用者是完全透明的。让你更关注父类能做什么,而不去关心子类是具体怎么做的,你可以随时替换一个子类,也就是随时替换一个具体实现,而不用修改其他.
报告相同问题?