I am attempting to use the Factory method
pattern. Classes B, C, and D are all children of an abstract class A. Each child has its own unique methods. Users have access to only the abstract class. I think it's not a good idea to give users the abstract class and ask them to cast back to the concrete class.
For instance,
A a = new C();
...
...
C c = (C) A;
c.uniqueMethod();
It would be nice when users invoke just the method on abstract class A. Unfortunately, B,C,and D do not contain common methods to be pushed up to class A.