Cara, não faço faculdade mas tenho um bom conhecimento de orientação a objetos.
Antes de ensinar Java, eu geralmente ensino como ver a vida, então imagine cada objeto ao seu redor como se ele derivasse de um objeto mais primitivo.
Eu começo sempre com Abstração e Concretização, então vamos lá ao primeiro passo:
Vou dar um exemplo bem simples:
Humano é uma classe abstrata, que define quais os atributos dos humanos e seus métodos de estudo, trabalho, ações
variáveis:
altura, peso, sexo…
métodos
pensar, mover, falar, tocar…
Claudinha é uma classe concreta que estende a classe Humano
além dela ter todos os atributos da classe Humano, ela tem algumas especialidades, como
beleza, carisma
e os métodos
dançar, chorar, ligar pro namorado toda semana
Analisando a classe Humano mais profundamente, iremos perceber que ela estende outras classes que estendem outras classes, por exemplo
Humano extends Primata
que extends Mamifero
que extends Animal
que extends Cordado
que extends SerVivo
que extends Criatura
que extends Organismo
que extends AglomeradoCelular
que extends AglomeradoMolecular
que extends Molecula
que extends Atomo
que extends Objeto
há alguns métodos em comum a todos esses objetos:
hashCode() código único em execução
getClass() classe em si
toString() transforma em texto
clone() faz uma cópia
finalize() finaliza a execução
notify() efetua notificações
wait() relacionado a execução
Você também pode definir métodos comuns desde o primeiro objeto
Agora a questão é, como trazer a classe para a realidade?
Constructors
os construtores são implícitos ou explícitos
implícitos são bem simples, não há construtor definido por você, apenas o construtor implícito da classe
os explícitos são aqueles que você define diretamente na classe
Entenda que o construtor cria uma instância da classe na memória do seu computador quando ela é chamada
Tudo é muito simples quando você tem uma mente aberta para enxergar a realidade.
Entenda que o Java nasceu assim, a galerinha tava tomando café na ilha de Java, e viram a vida ao seu redor, tentando procurar abstrações e concretizações, e heranças entre os objetos.
Antes de se debruçar em um livro, tente praticar no mundo real a herança e a abstração… veja quais são os objetos abstratos ao seu redor, e quais os concretos e quais as relações entre eles.
Agora, nesse momento, o site do guj é um objeto concreto do tipo Comunidade. Comunidade é um objeto abstrato ou um tipo de objeto.
É possível que você tenha visto algumas informações em stack traces dizendo que o tipo não é válido… entenda tipo como o seu tipo de objeto.
Todo objeto tem um tipo, seja ele concreto ou abstrato.
Amor, por exemplo, é um objeto do tipo sentimento;
Doravan é um objeto do tipo humano;
humano é um objeto abstrato do tipo humano;
Simples não?