En java, A a=new B(); ¿a representa un objeto de A o un objeto de B? ¿Por qué te refieres a esto? ¿Qué pasaría si se expresara como A a=new A();?
Desde la perspectiva de A a=new B();, A es el objeto padre directo o indirecto de B. En esta oración, a en la pila es una referencia a A y el objeto en la pila es B.
¿Por qué escribes esto? Existen algunos principios de buenas prácticas de programación, como la programación para interfaces, no para clases de implementación.
Su código simple A a=new B() y A a=new A (); pero si es un proyecto grande, es posible que no se cree directamente, sino a través del método de fábrica. Si el valor de retorno del método de fábrica es un objeto específico, entonces si desea cambiar el método de fábrica, debe cambiar la clase. usa el método de fábrica. Si mueves todo el cuerpo, se introducirán nuevos errores, pero cuando uses supertipos, ¡solo necesitas cambiar el método de fábrica! No se requieren cambios