Problema com Array[Resolvido]

interface Declaravel{
	void declarar();
}
class Imposto implements Declaravel{
	public void declarar(){}
	
	class NotaFiscal implements Declaravel{
		public void declarar(){}
		class Pagamento implements Declaravel{
			public void declarar(){}
		}
	}
}
public class Teste {
	public static void main(String[] args) {
		Declaravel [] d = new Declaravel[3];
		d[0] = new Imposto();
		d[1] = new NotaFiscal();//erro
		d[2] = new Pagamento();//erro
	}
	

}

Boa noite galera, estou com mais um problema, estudando por um livro me deparei com este exemplo e a seguinte explicação: se o array for declarado como um tipo de interface,seus elementos porderão fazer referência a qualquer instancia das classes que implementem a interface declarada.Portanto, tanto com relação a herança quanto com relação a interface, qualquer objeto que passe no teste é-um aplicado ao tipo de array declarado pode ser atribuído a um elemento desse array. A explicação me pareceu lógica, mas o compilador acusa erro no exemplo, alguém pode me dar uma idéia ou a explicação tá errada? Abraços.

O problema são as classes internas.
Para acessar uma classe interna você precisa da instância da classe superior.
Ex.:

        t[0] = new TesteS();
        t[1] = new TesteS().new NotaFiscal();
        t[2] = new TesteS().new NotaFiscal().new Pagamento();

Isso é uma das várias coisas que você só precisará saber para o exame.
Ter que acessar uma classe interna de fora, é possívelmente um erro de modelagem.

Opa, obrigado pela resposta, pelo que entendi então a explicação tá certa, o exemplo é que tá errado. Abraço.