继承中重写父类方法的问题

danwell7 2012-04-12 09:16:02
package Lang_1;
class A
{ public void fun1()
{
System.out.println("A-->public void fun1(){}");
}
public void fun2()
{ this.fun1();

}
}
class B extends A
{ public void fun1()
{
System.out.println("B-->public void fun1(){}");
}
public void fun3()
{
System.out.println("B-->public void fun3(){}");
}

}
class C extends A
{ public void fun1()
{
System.out.println("C-->public void fun1(){}");
}
public void fun5()
{
System.out.println("C-->public void fun3(){}");
}
}

public class InstanceofDemo
{

public static void main(String[] args)
{
fun(new B());
fun(new C());
}
public static void fun(A a)
{ a.fun1();
if(a instanceof B)
{ B b=(B)a;
b.fun3();
}
if(a instanceof C)
{ C c=(C)a;
c.fun5();
}

}

}

上面是多个类实现继承A类,这儿有些设计不够合理,如果在增加子类,public static void fun(A a)必须的改写,怎样设计父类A,当增加子类时,不需要修改fun()方法。
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
五哥 2012-04-12
  • 打赏
  • 举报
回复
a.fun1();
if(a instanceof B)
{ B b=(B)a;
b.fun3();
}
if(a instanceof C)
{ C c=(C)a;
c.fun5();
}


你这里走得方法都不统一 ,怎么设计啊 ?
cc65237877 2012-04-12
  • 打赏
  • 举报
回复
抽象类。抽象类可以继承,可以有抽象方法,和具体方法。动态绑定到具体方法对象上是否可以解决了?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧