Opa Samuel, tudo bem com você?
Está correto sim! Para ficar mais claro, vamos pegar suas diferenças:
Temos classes concretas que são as que já conhecemos, onde todos os métodos são concretos, ou seja, devem ser implementados;
Futuramente, veremos o que é uma interface, que é um recurso que permite apenas métodos abstratos, ou seja, nenhuma implementação (temos exceções, mas essa é a ideia principal);
E por fim, temos as classes abstratas que permitem tanto métodos concretos quanto métodos abstratos. Isso quer dizer que todos os métodos de uma classe abstrata podem ser tanto concretos como, também, todos podem ser abstratos!
Existem algumas regrinhas que devemos ter em mente quando usamos uma classe abstrata:
Uma classe abstrata não pode ser instanciada;
Uma classe abstrata pode ter tanto métodos abstratos quanto métodos com implementação;
Se a classe possui pelo menos um método abstrato, a classe deve ser abstrata também;
A classe que herdar de uma classe abstrata deve implementar seus métodos abstratos, a não ser que ela seja declarada como abstrata também.
Espero que isso te ajude! Se ficou alguma dúvida é só avisar!
Abraços e bons estudos!!