Я читал Тимоти Бадда:
http://www.ozon.ru/context/detail/id/136821/,
http://oper-poli.ru/sites/default/files/obektno-orientirovannoe_programmirovanie_v_deystvii.pdf.
Изложение не привязано к конкретному языку и в этом его сила. Написано хорошо и ясно, читается быстро и легко.
После неё можно сразу читать официальную документацию по Java
https://docs.oracle.com/javase/tutorial/java/concepts/.