Como chamar um classe interna no metodo main?

Minha duvida e como chamar uma classe interna


package exercicio26;


public class FabricaLampada {    
    
    public class Incandescente implements Lampada{
        @Override
        public boolean ligar() {            
             return true;
        }

        @Override
        public boolean desligar() {            
            return false;
        }   
    }
    
    public class Fluorescente implements Lampada{
        @Override
        public boolean ligar() {            
             return true;
        }

        @Override
        public boolean desligar() {            
            return false;
        }
    }
    
    public void construir(){
        
        
    }
}

Classe PRINCIPAL

package exercicio26;

import java.util.*;

public class Exercicio24 {
    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
         //cria o objeto lampada
        FabricaLampada lampada = new FabricaLampada();
        
        lampada.construir();
        
    }
    
}

Gostaria de chamar a classe incandescente e a outra Exercício 26. Siga as instruções abaixo para implementar um exercício de demonstração de classes internas:

  • Crie uma interface Lampada com métodos ligar() e desligar(), cujo contrato
    significa simplesmente imprimir mensagens informativas na tela;
  • Crie uma classe FabricaLampada que possui duas classes internas aninhadas que
    implementam a interface Lampada: Incandescente e Fluorescente;
  • Crie ainda um método construir(), que receba um parâmetro indicando o tipo de
    lâmpada e retorne o objeto Lampada criado;
  • Crie uma classe Exercicio24 com o método main(). Pergunte ao usuário qual
    lâmpada ele quer construir, ligue e desligue a lâmpada.

Consegui, só não sei como excluir a pergunta aqui no forum haha

FabricaLampada lampada = new FabricaLampada();
FabricaLampada.Incandescente lamp1 = lampada.new Incandescente();

não é necessário, se outras pessoas tiverem o mesmo problema, visualizaram quando procurar pelo google.

1 curtida

Você não fez como o enunciado pediu.
É para construir as lâmpadas usando o método construir, que deve receber um parâmetro indicando se a lâmpada a ser construída é incandescente ou fluorescente.

Método construir, da classe FabricaLampada:

public Lampada construir (boolean fluorescente) {
    if (fluorescente) {
        return new Fluorescente();
    }
    return new Incandescente ();
}

Exemplo de uso:

FabricaLampada fabrica = new FabricaLampada ();
Lampada incandescente = fabrica.construir(false);
Lampada fluorescente = fabrica.construir(true);

Entendi, obg eu estou começando em java e orientação tudo junto, estou ainda aprendendo, então fiz meio que como gambiarra, mas esse exercicio me confundiu pq tinha que fazer 3 classes, 1 interface, e uma classe main para chamar outra, sendo que nem precisava e isso me confundiu pacas, vlw man.


como ficou


/**
* • Crie uma interface Lampada com métodos ligar() e desligar(), cujo contrato
significa simplesmente imprimir mensagens informativas na tela;
• Crie uma classe FabricaLampada que possui duas classes internas aninhadas que
implementam a interface Lampada: Incandescente e Fluorescente;
• Crie ainda um método construir(), que receba um parâmetro indicando o tipo de
lâmpada e retorne o objeto Lampada criado;
• Crie uma classe Exercicio24 com o método main(). Pergunte ao usuário qual
lâmpada ele quer construir, ligue e desligue a lâmpada.
*/

package exercicio26;

import java.util.Scanner;

public class Exercicio26 {

public static void main(String[] args) {
    Scanner in= new Scanner(System.in);        
    Exercicio24 exe= new Exercicio24();        
    exe.construcao();
}

}

package exercicio26;

import java.util.*;

public class Exercicio24 {
public static void main(String[] args) {

   construcao();        
}

public static void construcao(){ 
   Scanner in= new Scanner(System.in);
   FabricaLampada lampada = new FabricaLampada();
   FabricaLampada.Incandescente lamp1 = lampada.new Incandescente();
   FabricaLampada.Fluorescente lamp2 = lampada.new Fluorescente();  
   
   lampada.construir();

    
}

}

package exercicio26;

public interface Lampada {

boolean ligar();
boolean desligar();

}


package exercicio26;

import java.util.Scanner;

public class FabricaLampada {
Scanner in= new Scanner(System.in);

public class Incandescente implements Lampada{
    @Override
    public boolean ligar() {            
         return true;
    }
    @Override
    public boolean desligar() {            
        return false;
    }   
}

public class Fluorescente implements Lampada{
    @Override
    public boolean ligar() {            
         return true;
    }
    @Override
    public boolean desligar() {            
        return false;
    }
}
private boolean status; //ligado ou não        
public boolean getStatus() {
    return status;
}

public void setStatus(boolean status) {
    this.status = status;
}


public void construir(){
    
    boolean ver= false;
    do{
    System.out.println("------CONSTRUÇÃO DE LAMPADA-----");
    System.out.println("Digite qual lampada gostaria de criar");
    System.out.println("1------------------------Fluorescente");
    System.out.println("2------------------------Incandescente");        
    int opcao= in.nextInt();
    if(opcao==1){
        Fluorescente nova= new Fluorescente();
        System.out.println("Lampada Fluorescente criada com sucesso"); 
        in.nextLine();
        System.out.println("Deseja ligar (S/N)");
        String dado= in.nextLine();
        if (dado.equalsIgnoreCase("s")){
            nova.ligar(); 
            this.setStatus(true);                
            System.out.println("Lampada ligada."); 
            System.out.println("Status:"+this.getStatus());
        }else if(dado.equalsIgnoreCase("n")){
            nova.desligar();
            this.setStatus(false);                
            System.out.println("Lampada desligada.");
            System.out.println("Status:"+this.getStatus());
        }
            
        ver= true;
    }else if(opcao==2){
         Incandescente nova= new Incandescente();
        System.out.println("Lampada Incandescente criada com sucesso"); 
        in.nextLine();
        System.out.println("Deseja ligar (S/N)");
        String dado= in.nextLine();
        if (dado.equalsIgnoreCase("s")){
            nova.ligar(); 
            this.setStatus(true);                
            System.out.println("Lampada ligada."); 
            System.out.println("Status:"+this.getStatus());
        }else if(dado.equalsIgnoreCase("n")){
            nova.desligar();
            this.setStatus(false);                
            System.out.println("Lampada desligada.");
            System.out.println("Status:"+this.getStatus());
        }
      ver=true;  
    }else{
        System.out.println("Número inválido");
        ver= false;
    }
   }while(!ver);
}

}

Pelo enunciado, é para o método construir instanciar a lâmpada, como no exemplo que te enviei

1 curtida