Inheritance is a way to achieve subtyping. Taken from Wikipedia :
In programming language theory, subtyping (also subtype polymorphism or inclusion polymorphism) is a form of type polymorphism in which a subtype is a data type that is associated with another data type (supertype) using some notion of substitution, which means that program elements, usually subroutines or functions written to work on supertype elements can also work with subtype elements.
In short, let's take a look at this:
class Super { } class Child extends Super { }
This is inheritance, because Child inherits everything from Super .
Super super = new Child();
This is subtyping because we mean Child as Super . Therefore, you should understand what I mean when I say that Inheritance allows subtyping, but it’s not the same thing.
For example, you can achieve subtyping using interfaces:
class Child extends Super implements ISomeInterface { }
Now we can refer to Child as:
ISomeInterface someInterface = new Child();
Here we refer to it as an ISomeInterface type, without requiring an inheritance relationship.
Your questions
All Objects in Java are subclasses of type Object . They implicitly have extends Object in the title of their class. This is how the language works. So yes, every object is a subtype of the Object class.
In Java, inheritance is only available with the extends .
Additional reading
Edit
Listen to everything that Marco Topolnik says. He's pretty smart, you know.