Слишком много информации об объектах. Самое главное - освоить азы, и все станет легче.
Вот способ думать об объектах. Подумайте о структурах данных на процедурных языках. Это группа полей без поведения. Подумайте о функциях, которые получают указатели на эти структуры данных и управляют последними. Теперь вместо того, чтобы разделять их, определите функции внутри определения структур и предположите, что функции обычно получают указатель на структуру данных для управления. Этот указатель называется this. В общем, думайте об объектах как о сочетании статуса (данных) и поведения (методы - причудливое название функций в ООП).
Это абсолютная основа. Вы должны полностью освоить еще три концепции:
Наследование - это все о повторном использовании кода.
Инкапсуляция - это все о сокрытии реализации от интерфейса. Проще говоря, все должно быть конфиденциальным, пока не будет доказано обратное.
Полиморфизм - не имеет значения тип ссылочной переменной, но тип фактического экземпляра, чтобы знать, какое поведение (метод) вызывается. Java не позволяет легко представить эту концепцию, потому что по определению все полиморфно. .Net упрощает понимание, поскольку вы решаете, что полиморфно, а что нет, и, следовательно, замечаете разницу в поведении. Это достигается за счет комбинации виртуального и переопределения.
Если эти концепции очень хорошо поняты, все будет в порядке.
И последний совет: вы упоминаете лучшие книги. Вы читали « Мыслить на Java » Брюса Экеля? Я рекомендую эту книгу даже тем, кто только начинает работать с .Net, так как концепции ООП четко изложены.