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.
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.
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
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.
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
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.
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.