Creating a child class instance. What is the difference between different ways you can do it?

Suppose I have a Triangle class that extends a Shape class. What is the difference between the following

Shape triangle = new Triangle ();
Triangle triangle = new Shape ();
Triangle triangle = new Triangle ();

?

I’m not sure the second one works.
I think you can do

Shape triangle = new Triangle();

if Triangle extends Shape
but not the other way around.

I could be wrong about that.