Qual a diferença de um metodo default pra um static em um interface?
Qual a diferença de um metodo default pra um static em um interface?
Olá, Luccas! Tudo bem?
Ótima pergunta! Vamos lá:
Método default
em uma interface:
Exemplo:
public interface MyInterface {
default void sayHello() {
System.out.println("Hello from default method!");
}
}
public class MyClass implements MyInterface {
// Pode usar a implementação padrão ou sobrescrever o método
}
Método static
em uma interface:
Exemplo:
public interface MyInterface {
static void sayHello() {
System.out.println("Hello from static method!");
}
}
public class MyClass implements MyInterface {
// Não pode sobrescrever o método estático
}
// Para chamar o método estático
MyInterface.sayHello();
Resumindo, a principal diferença é que métodos default
podem ser sobrescritos pelas classes que implementam a interface, enquanto métodos static
não podem ser sobrescritos e são chamados diretamente na interface.
Espero ter ajudado e bons estudos!
Entao metodo static, eu nao poderia chamar MyClass.sayHello();?
Opa Lucas!
Exatamente! Quando um método static é definido em uma interface, ele pertence à própria interface, não à classe que implementa a interface. Portanto, não é possível chamar o método estático diretamente através da classe que implementa a interface. Você deve chamá-lo diretamente pela interface.
Então, ao tentar chamar MyClass.sayHello();
, isso resultaria em um erro de compilação, pois sayHello() é um método estático da interface MyInterface
, e não da classe MyClass.
Se precisar de mais alguma coisa, é só me avisar.