继承中重写父类方法的问题
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()方法。
------解决方案--------------------
抽象类。抽象类可以继承,可以有抽象方法,和具体方法。动态绑定到具体方法对象上是否可以解决了?