This document is a lecture on object-oriented programming concepts in Java including abstraction, encapsulation, and interfaces. It defines these concepts and provides examples to illustrate them. Abstraction hides implementation details and shows only functionality. Encapsulation wraps code and data together and controls access through getters and setters. Interfaces contain abstract method signatures that classes implement, allowing for multiple inheritance of behaviors. The lecture covers declaring and implementing abstract classes and interfaces and how inheritance and polymorphism apply.