Reduction to the base (super) type in Java

class Shape {
    public String name;
    Shape() {
        name = "Shape";
    }
}

class Square extends Shape {
    Square() {
        name = "Square";
    }
}

Square square = new Square();

//implicit method
Shape shape = square;

//explicit method
shape = (Shape)square;

String name = shape.name;
//name is "Square"