Com relação aos conceitos de programação orientada a objetos, é correto afirmar que:
Em geral, nas linguagens de programação orientadas a objetos, não é necessário saber qual a classe de um determinado objeto.
Uma classe descreve um grupo de objetos com propriedades (atributos) similares, comportamento (operações) similares, relacionamentos comuns com outros objetos e uma semântica comum.
Um atributo é uma característica presente nos objetos de uma classe. Cada atributo tem um valor para cada instância da classe (objeto). Assim, diferentes instâncias podem ter o mesmo valor para um dado atributo. Cada nome de atributo é único para todas as classes, não podendo se repetir.
Generalização e herança são abstrações poderosas para compartilhar similaridades entre classes e ao mesmo tempo preservar suas diferenças. Porém, generalização e herança não são abstrações transitivas, isto é, não podem ser recursivamente aplicadas a um número arbitrário de níveis.
Um objeto é definido como um conceito, abstração ou coisa com limites e significados bem definidos. Objetos têm dois objetivos principais: promover o entendimento do mundo real e suportar uma base prática para uma implementação computacional. Os objetos possuem propriedades e comportamentos, mas não possuem identidade.