父类调子类里面的方法的用法有什么好处??

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:10:54
public static void main(String[] args)
{
superA a;
subB b = new subB();
subC c = new subC();
a=b;
a.fun(); (1)
a=c;
a.fun(); (2)
}

superA 是一个父类
superB superB继承了superA
有谁能帮我解释一下a.fun();(1)和 a.fun();(2)是什么意思?
这样做有什么好处呢??

ls的回答好像有些误导吧。这不是java的上转型吗,上转型时如果调用了被子类重写的方法,则执行的是子类那个重写了的方法。
也就是说,如果subB或subC中重写了superA里的fun(),那么a=b;a.fun()则执行的是b.fun()。

这样做的好处是当我们想让一个类的对象(不管他具体是哪个子类的)作一件事儿时,不必判断具体是哪个子类,反正就是要让他们做同这件事儿。在这个例子里体现的不是很明显。

比如superA是指人,subB和subC分别是中国人和外国人(分得有点儿傻,呵呵,意思明白就ok了),superA的fun()是吃饭,subB和subC里的fun()分别是用筷子吃和用刀叉吃。现在来了个人,我们就是想让他吃饭,那就调用fun()好了,java就会替我们根据来的这个人是中国人还是外国人而决定给他用筷子还是用刀,而不用你自己写代码去判断他是什么人。

(1)调用的是父类superA的fun方法
(2)调用的是父类superA的fun方法
这样做不用实例化对象再去调方法