Como usar implements class abstract e interfaces?

4 respostas
ceceu

Pessoal eu gostaria que alguem me ajudasse a entender os conceitos abaixo:

implements

class abstract

interfaces

e que dessem alguns exemplos para que eu possa praticar.

Aguardo resposta.

Obrigado.

4 Respostas

R

Não sei c vai te esclarecee, mas qq coisa poste mais duvidas

public class Nome_classe extends extensão_que_quiser_usar implements o_que_for_implementar
Um exemplo de uma implementação minha: Aqui no caso estou usando uma extensão para o JFrame e 2 implementações, uma para pegar a ação do botao e outra para ação da tecla.
public class Visual extends JFrame implements ActionListener, KeyListener{

	private JLabel label = new JLabel();	
	private JLabel labelData = new JLabel("Data: ");
	private JLabel labelHora = new JLabel("Hora: ");
	private JLabel labelConfirmacao = new JLabel();
	private JPanel panel = new JPanel();	
	private JButton botaoAgendar = new JButton("Agendar");
	private JButton botaoCancelar = new JButton("Cancelar");

	public Visual()
	{
		fieldHora.setColumns(3);
		fieldData.setColumns(6);
		panel.add(labelData);
		panel.add(fieldData);
		panel.add(labelHora);		
		panel.add(fieldHora);		
		panel.add(botaoAgendar);
		panel.add(botaoCancelar);	
		panel.add(labelConfirmacao);

		botaoAgendar.addActionListener(this); //Aqui estou adicionando meu botao a implementação ActionListener
		botaoCancelar.addActionListener(this); //Aqui estou adicionando meu botao a implementação ActionListener


		botaoAgendar.addKeyListener(this); //Aqui estou adicionando o meu botao a implementação KeyListener

		setTitle("Titulo que vc quiser");	//Titulo do frame		
		Tela();		
		add(panel);			//add painel no frame
		setVisible(true);		//Tela visivel
		setLocationRelativeTo(null); //Centralizar o frame
		setSize(400,120); //Dimensão da tela
		setResizable(false); //Desabilita o maxima, e que o usuario aumente o tamanho da tela
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // Configura para ignorar o botão
		//int op = frame.getDefaultCloseOperation(); // Obtém a operção padrão de fechar a janela
	}

}

Veja que não precisei declarar o JFrame, pois essa classe é uma extenão dele, assim faz com que ele Utileze metodos do JFrame.
Veja também que no exemplo acima eu não detalhei como funciona as implementações, qualquer duvida sobre elas é so postar.

Nicolas_Fernandes

Olá, Ceceu! Tudo bem?

Bom, vou tentar ser breve e objetivo. Que alguém me corrija, se estiver errado!

Interfaces
As Interfaces são nada mais que “contratos”, digamos assim.
São estruturas que só possuem as assinaturas de métodos, mas não sua implementação.
Ex.:

public interface MyInterface {

   public void myFirstSignature(int firstNumber, int secondNumber);
   public String mySecondSignature(String myString, List<Object> myList);
  
}

Perceba que só coloquei a assinatura dos métodos: escopo de visibilidade, tipo de retorno, nome do método e parâmetros.
Você não deve implementar estes métodos na nossa interface. Por quê?

Você se utiliza de classes específicas para implementar essas interfaces!

Quando você está trabalhando com Swing, por exemplo, e quer fazer um método para tratar o evento de um botão:

public class MyButtonAction implements ActionListener {
   public void actionPerformed(ActionEvent event) {
      //...
   }
}

Veja em cima. Aproveitando este exemplo, vem a explicação da palavra reservada implements. Você usa ela justamente quando quer tratar de uma interface!

Um exemplo com a interface que criei:

public class MyClass implements MyInterface {

}

Ou seja, estou dizendo que minha classe MyClass fará uso da minha interface MyInterface.

Quando uma classe implementa uma interface, OBRIGATORIAMENTE ela deve implementar seus métodos. Por isso dizemos que a interface é um contrato. A classe que se dispõe a fazer uso dela tem, “por contrato”, que implementar as assinaturas definidas!

public class MyClass implements MyInterface {
   public void myFirstSignature(int firstNumber, int secondNumber){
      //...
   }

   public String mySecondSignature(String myString, List<Object> myList) {
      //...
   }
}

Qual a utilidade disso? Você pode criar a assinatura de um método que será comum em várias classes, e só ir implementando esta interface, sem a necessidade de ficar reescrevendo o método toda hora!

Abstract Classes
As classes abstratas não podem ser instanciadas!

Não se pode fazer isso:

public static void main(String[] args) {

   MyAbstractClass myClass = new MyAbstractClass();
}

Espero que alguém possa explicar mais detalhadamente ao nosso amigo sobre classes abstratas, pois não estou achando as palavras corretas para tal!

Espero ter ajudado!

[]'s

jyoshiriro

Amigo, é o seguinte:

implements
Usado para implementar Interfaces. Interfaces são como classes mas seus métodos não possuem “corpo” e não posdem ser instanciadas.
Exemplo:

Corredor.java

public interface Corredor { void correr(); }

Maratonista.java

public class Maratonista implements Corredor { void correr() { System.out.println("Maratonista correndo"); } }

Uma classe pode implementar várias Interfaces.
Exemplo:

Nadador.java

public interface Nadador { void nadar(); }

Ciclista.java

public interface Ciclista { void pedalar(); }

Triatleta.java

public class Triatleta implements Corredor, Nadador, Ciclista { void correr() { System.out.println("Triatleta correndo"); } void nadar() { System.out.println("Triatleta nadando"); } void pedalar() { System.out.println("Triatleta pedalando"); } }
Nesse caso, quando uma classe implementa várias Interfaces dizemos que houve POLIMORFISMO.

Quando uma Classe implementa uma Interface, ela é OBRIGADA a implementar os métodos. A MENOS QUE a classe seja abstrata (abstract).

Exemplo:
AbstractMaratonista.java

public abstract class AbstractMaratonista implements Corredor { //nada, sou abstrata! }

Nesse caso, a primeira classe concreta (não abstrata) DEVE implementar os métodos da Interface.

Exemplo:

Maratonista.java

public class Maratonista extends AbstractMaratonista { void correr() { System.out.println("Maratonista correndo"); } }
Quando uma classe implementa uma Interface dizemos que ela “Is like A” uma Interface.

class abstract
Já respondi parte dela acima.
São classes que só diferem de classes concretas em 2 coisas:

1. Não podem ser instanciadas: A classe AbstractMaratonista acima não poderia ser usada assim [color=blue]AbstractMaratonista am = new AbstractMaratonista()[/color]. Nem compilaria.

2. Não são obrigadas a implementar os métodos das Interfaces que implementam (já visto acima).

Interfaces
Já respondi parte dela acima.
Como disse acima, Interfaces não podem ser instanciadas.
A Interface Corredor não poderia ser usada assim. [color=blue]Corredor c = new Corredor();[/color] Daria um erro.
Você só pode instanciar Classes concretas que implementem as Interfaces.

Exemplo:

Corredor c = new Maratonista();

Uma Interface pode extender outra.

Exemplo:
CorredorDeRevezamento.java

public interface CorredorDeRevezamento extends Corredor { void passarBastao(); }
Uma Interface NÃO IMPLEMENTA outra e sim a extende! Nunca confunda isso!

Espero ter ajudado.

ceceu

ceceu:
Pessoal eu gostaria que alguem me ajudasse a entender os conceitos abaixo:

implements

class abstract

interfaces

e que dessem alguns exemplos para que eu possa praticar.

Aguardo resposta.

Obrigado.

Criado 11 de setembro de 2009
Ultima resposta 12 de set. de 2009
Respostas 4
Participantes 4