Como instanciar classe Inner Class de uma classe abstrata?

4 respostas
M

Durante a aula de Polimofirmo, desenvolvi meu código usando Inner Class, a classe Calculadora não pode ser instanciada e deve ser abstract.

Classe: Calculadora.java

public abstract class Calculadora {

    public class Soma extends Calculadora {

     
    }
    public class Subtracao extends Calculadora {

     
    }
}

Procurando na documentação, eu encontrei a seguinte solução:

Calculadora calc = new Calculadora().new Soma(); //erro

Porém isso não compila, talvez porque Calculadora seja abstract.
Finalmente, a solução foi usar static nas classes internas, da seguinte forma

Calculadora calculadora = new Calculadora.Init();
Por questões academicas, é possível criar uma instância da classe Soma sendo que Calculadora é abstract?

Obrigado

4 Respostas

ViniGodoy

Essa linha está errada:

Calculadora calc = new Calculadora().new Soma(); //erro

Por que você dá new em calculadora.

O correto seria:

O “Calculadora.” antes do “Soma()” denota apenas o escopo.

M

Quando faço isso o erro, não compila, o erro é:

Vai funcionar só se eu colocar o método como static

tivrfoa

É claro meu.

public abstract class Calculadora {

    public class Soma extends Calculadora {
		public String toString() { return "Eu sei somar."; }
    }
    public class Subtracao extends Calculadora {

     
    }
}

class ScientificCalculator extends Calculadora {
	
}

class TestScientificCalculator {
	public static void main(String[] args) {
		ScientificCalculator sc = new ScientificCalculator();
		Calculadora.Soma soma = sc.new Soma();
		System.out.println(soma);
	}
}

:D

ViniGodoy

Ah sim, é verdade. Se ela não for estática, vai depender de uma instância de calculadora.

Nesse caso, ou você tem uma instância do filho, ou nada feito.

Criado 31 de outubro de 2009
Ultima resposta 1 de nov. de 2009
Respostas 4
Participantes 3