Desculpe pela pergunta, mas não consegui entender pelos livros, como a super classe pode instanciar uma subclasse e uma subclasse que é uma super-classe +adicionais não pode instanciar a super classe, não consegui ver a lógica ainda - DUVI
Vc tem que pensar desta forma:
Object o = new String();
por que isto é possivel?
Observer:
public final class String extends java.lang.Object {
//////
}
A superclasse String pode instanciar a classe pai object porque toda String é um object (extends Object). Os metodos equals, toString entre outros, acessados por 'o '(variavel do codigo acima) serão as implementações sobreescritas da classe String.
Uma outra forma de pensar é com exemplos babacas do tipo
[code] class Animal {}
class Urso extends Animal{}
Animal a = new Urso() //isso funciona pq Urso é Animal e conhece tudo da classe Animal pois a extende
Urso b = new Animal() //isso NÃO funciona pq a classe Animal não conhece nada sobre a classe Urso[/code]
Basicamente é seguir a teoria “geral -> particular”
Como já foi exemplificado
Animal = new urso(); // vai do geral ao particular