If you've never used an object-oriented programming language before, 
you'll need to learn a few basic concepts before you can begin writing 
any code. This lesson will introduce you to objects, classes, 
inheritance, interfaces, and packages. Each discussion focuses on how 
these concepts relate to the real world, while simultaneously providing 
an introduction to the syntax of the Java programming language.
An object is a software bundle of related state and behavior. 
Software objects are often used to model the real-world objects that you
 find in everyday life. This lesson explains how state and behavior are 
represented within an object, introduces the concept of data 
encapsulation, and explains the benefits of designing your software in 
this manner.
A class is a blueprint or prototype from which objects are created. 
This section defines a class that models the state and behavior of a 
real-world object. It intentionally focuses on the basics, showing how 
even a simple class can cleanly model state and behavior.
Inheritance provides a powerful and natural mechanism for organizing 
and structuring your software. This section explains how classes inherit
 state and behavior from their superclasses, and explains how to derive 
one class from another using the simple syntax provided by the Java 
programming language.
An interface is a contract between a class and the outside world. 
When a class implements an interface, it promises to provide the 
behavior published by that interface. This section defines a simple 
interface and explains the necessary changes for any class that 
implements it.
A package is a namespace for organizing classes and interfaces in a 
logical manner. Placing your code into packages makes large software 
projects easier to manage. This section explains why this is useful, and
 introduces you to the Application Programming Interface (API) provided 
by the Java platform.
Use the questions and exercises presented in this section to test 
your understanding of objects, classes, inheritance, interfaces, and 
packages.