Question: I want to understand this:

```
ParentClass p=new ChildClass(); 
//Here ChildClass extends ParentClass

```

Is `p` object of `ParentClass` or of `ChildClass`?

Answer: 
> 
> Is p object of ParentClass or of ChildClass?
> 
> 
> 

`p` is an instance of `ChildClass`. Any instance of `ChildClass` is also an instance of `ParentClass`. The other way around is not true.

**EDIT:**

If you were to call `p.getClass()`, that will return `ChildClass`.
Think about `p` as a view on the given object. You can view a `Dog` as an `Animal` (in which case you can e.g `feed()` it), or you can view it as a `Dog` (so you can get it to `bark()`). In other words, the variable's type that references an object will restrict what you can call on it, but does not change the type of the object.