Abstract X interface

Criar uma classe/métodos abstract para comprometer suas classes filhas com seu(s) método(s) parece ser o mesmo que implementar uma interface.

A única diferença q vejo é q uma interface pode ser implementada por outras classes (classes independentes, de contextos diferentes) agora, fora isso, pode-se dizer q implemetar uma interface e criar uma classe abstrata é a mesma coisa?

abs

Uma classe abstrata pode ter métodos concretos e atributos, uma interface não.
Uma classe só pode extender uma classe (abstrata ou não), mas pode implementar várias interfaces.

valeu mas, o q estou querendo saber é: se uma classe abstrata obriga o override de seus métodos pelas classes filhas, qual a diferença disso para a implementação de uma interface?

Não necessariamente. Ela pode ter métodos concretos.

abstract class A { void a() { System.out.println("a"); } }
A classe que extender ela pode sobrescrever ou não esse método.

E pode ter métodos não-public também. Interface só pode public.

Tá certo… acho q estou confundindo classe abstrata com método abstrato, se for um método abstrato da classe pai aí sim podemos considerar o q eu disse no post anterior, sobre ser análogo a uma interface para as classes filhas, certo?

Sim… mas ainda assim, na interface ele tem que ser public, enquanto na classe abstrata poderia ter outro acesso.

ok, obrigado! :smiley:

uma interface apenas obriga que a classe que a implementa tenha tais metodos
uma classe abstrata pode ter metodos que “trabalhem”, criando uma base para classes filhas que reunão mesmas funcionalidades
metodos abstratos são muito uteis quando cada uma dessas classes filhas precisa tratar de forma diferente situações criadas pela classe mãe…