Es gibt zu viele Informationen über Objekte. Das Wichtigste ist, die Grundlagen zu beherrschen, und alles passt leichter zusammen.
Hier ist eine Möglichkeit, über Objekte nachzudenken. Denken Sie an Datenstrukturen in prozeduralen Sprachen. Sie sind eine Gruppe von Feldern ohne Verhalten. Denken Sie an Funktionen, die Zeiger auf diese Datenstrukturen erhalten, und bearbeiten Sie diese. Definieren Sie nun die Funktionen innerhalb der Definition der Strukturen, anstatt sie getrennt zu haben, und nehmen Sie an, dass die Funktionen normalerweise einen Zeiger auf die zu manipulierende Datenstruktur erhalten. Dieser Zeiger heißt so. Stellen Sie sich Objekte in der Summe als die Kombination von Status (Daten) und Verhalten (Methoden - der ausgefallene Name für Funktionen in OOP) vor.
Dies ist die absolute Basis. Es gibt drei weitere Konzepte, die Sie unbedingt beherrschen müssen:
Vererbung - Hier geht es um die Wiederverwendung von Code.
Kapselung - Hier geht es darum, die Implementierung vor der Schnittstelle zu verbergen. Einfach ausgedrückt, sollte alles privat sein, bis das Gegenteil bewiesen ist.
Polymorphismus - Es spielt keine Rolle, welchen Typ die Referenzvariable hat, sondern welchen Typ die tatsächliche Instanz hat, um zu wissen, welches Verhalten (Methode) aufgerufen wird. Java macht es nicht einfach, dieses Konzept sehr gut sichtbar zu machen, da per Definition alles polymorph ist. .Net erleichtert das Verständnis, wenn Sie entscheiden, was polymorph ist und was nicht, und bemerkt so den Unterschied im Verhalten. Dies wird durch die Kombination von virtuell und Override erreicht.
Wenn diese Konzepte sehr gut verstanden werden, wird es Ihnen gut gehen.
Ein letzter letzter Tipp: Sie erwähnen die besten Bücher. Haben Sie " Thinking in Java " von Bruce Eckel gelesen ? Ich empfehle dieses Buch sogar Leuten, die mit .Net beginnen, da die OOP-Konzepte klar umrissen sind.