Métodos de interface e métodos de classe

4 respostas
andrepm

Boa noite pessoal,

O que define que um método é de uma classe ou de uma interface?

O simples implements Interface define isso?

Por exemplo, tenho a interface abaixo:

public interface Autenticavel {
	
	boolean autentica(int senha);

}

E a classe:

public class Diretor extends Gerente implements Autenticavel {

	Diretor(String nome, String departamento, String RG, String email) {
		super(nome, departamento, RG, email);
	}
	
	public boolean autentica(int senha) {
		if (this.senha == senha) {
			System.out.println("Acesso Permitido!");
			return true;
		} else {
			System.out.println("Acesso Negado!");
			return false;
		}
	}
	
	

}

Se eu tirar o implements o método será da classe? Ainda não enxergo vantagem nisso, só em caracterizar a classe como autenticavel memso.

4 Respostas

A

Olá não entendi sua pergunta!

Os métodos são os comportamentos de uma classe. Uma classe Carro tem métodos como acelerar(), mudarDirecao(),frear(), etc.

Agora dentro das interfaces vc só declara os métodos. Ou seja, que assinaturas terão: parâmetros, tipo de retorno, etc .

Nas classes concretas, classes q implementam interfaces , há as implementações dos métodos .
Nas classes comuns que não implementam nada , os métodos também contém implementações obrigatoriamente.

Assim numa interface vc apenas declara o método:

public static double frear(double aceleration) ;

Nas classes que implementa-a vc dá vida aos métodos:

public class Carro implements Veiculo {

public static double frear(double aceleration) {

//codigo aqui

}

}
andrepm

Mas o que define que o método x, é um método oriundo da interface x?

A

Boa pergunta.

Em uma frase de resposta a sua pergunta seria: “ele tem que estar dentro da interface”.

Só que não é só isso, uma interface poderá herdar uma ou mais interfaces. Então um determinado método poderá ser dito que é de uma interface chamada A , quando na verdade é de outra interface , dita B. Para isso a relação entre as interfaces A e B tem que ser de herança (extends) . Quem implementar a interface A terá que fazer o mesmo da B (ou seja, implementar os métodos da interface B) .

Ex:

public interface A {

public double area(int lado);

}

public class concreteA implements A {

public double area(int lado){

return lado*lado;

}

}

public interface A {

public double area(int lado);

}

public interface B extends A {

public double perimetro(int lado);

}

public class concreteA implements B {

public double area(int lado){

return lado*lado;

}

public double perimetro(int lado){

return 4*lado;

}

}

andrepm

Valeu novamente Alexandre! Acredito ter entendido hahaha. Aliás você até respondeu uma coisa que eu ia caçar na internet depois. No caso se uma classe poderia herdar de outra e implementar N interfaces. Parece que nessa parte o Java é bem liberal mesmo.

Criado 27 de março de 2014
Ultima resposta 1 de abr. de 2014
Respostas 4
Participantes 2