Vamos lá.
B está relacionado com A de tal forma que B É UM A.
Isso permite que você faça isso:
A a = new B();
O que define qual mensagem será exibida não é o que vem após a igualdade, mas, o que está antes da variável, no caso, A.
Basicamente, você diz, com esta linha: java, aloque um objeto A, chamado a a partir da parte de B que é um A.
Confuso? Mais ou menos.
B é um A, correto? Na prática, você diz que B é feito de A mais alguma(s) coisa(s). Assim sendo, se você faz
A objeto = new B();
Está dizendo que não quer saber o que B tem de específico (não nesse momento). Quer apenas a parte de B que se refere ao A.