Noob here, with some questions about fundamental things in Java.

If we have a class `Person` with a constructor (also Person) we can create a reference variable like this:

```
Person johnny = new Person();

```

Let's say we have just created in a class `People` an object, `johnny`.
It holds an "address" to where the object and its values are kept, unlike objects of primitives types do (e.g. int x = 5; has the value 5, `johnny` is a "link" to the value - if I've understood things correctly.) 

**1st word:** `Person` is a class/type (<-- edited here), but:

* What does a class/type do? What does it entail? Perhaps: what does a type do, if it is not a 'primitive type'?

**2nd word:** `johnny` is a reference variable, of type Person.
- If I am missing something, please enlighten me :)

**3rd word:** `new` this just states that we are creating the new object.

**4th word:** second `Person`:

* This is the object we are creating?
* Is this the constructor or the class we are referring to?

ALSO:

* The value (address) that the variable is referring to is everything after the equal sign? Is the address `new Person`?

LASTLY: Polymorphism. 
So if we have a sub-class `Adult`, which extends the super-class `Person`, then we can do this:

```
Person amanda = new Adult();

```

* What are we doing now?
* Is `amanda` of class type Person and refers to an object in the class `Adult`?

Thanks for your help :)