Ejemplo explícito de conversión de tipos en java.

Me he encontrado con este ejemplo enhttp://www.javabeginner.com/learn-java/java-object-typecasting y en la parte donde se habla de la conversión explícita de tipos hay un ejemplo que me confunde.

El ejemplo:

class Vehicle {

    String name;
    Vehicle() {
        name = "Vehicle";
    }
}

class HeavyVehicle extends Vehicle {

    HeavyVehicle() {
        name = "HeavyVehicle";
    }
}

class Truck extends HeavyVehicle {

    Truck() {
        name = "Truck";
    }
}

class LightVehicle extends Vehicle {

    LightVehicle() {
        name = "LightVehicle";
    }
}

public class InstanceOfExample {

    static boolean result;
    static HeavyVehicle hV = new HeavyVehicle();
    static Truck T = new Truck();
    static HeavyVehicle hv2 = null;
    public static void main(String[] args) {
        result = hV instanceof HeavyVehicle;
        System.out.print("hV is an HeavyVehicle: " + result + "\n");
        result = T instanceof HeavyVehicle;
        System.out.print("T is an HeavyVehicle: " + result + "\n");
        result = hV instanceof Truck;
        System.out.print("hV is a Truck: " + result + "\n");
        result = hv2 instanceof HeavyVehicle;
        System.out.print("hv2 is an HeavyVehicle: " + result + "\n");
        hV = T; //Sucessful Cast form child to parent
        T = (Truck) hV; //Sucessful Explicit Cast form parent to child
    }
}

En la última línea en la que T se asigna la referencia hV y se encasilla como (Camión), ¿por qué se dice en el comentario que se trata de una conversión explícita exitosa de padres a hijos? Según entiendo, la conversión (implícita o explícita) solo cambiará el tipo de objeto declarado, no el tipo real (que nunca debería cambiar, a menos que realmente asigne una nueva instancia de clase a la referencia de campo de ese objeto). Si a hv ya se le asignó una instancia de una clase HeavyVehicle que es una súper clase de la clase Truck, ¿cómo se puede convertir este campo en una subclase más específica llamada Truck que se extiende desde la clase HeavyVehicle?

La forma en que lo entiendo es que la conversión sirve para limitar el acceso a ciertos métodos de un objeto (instancia de clase). Por lo tanto, no puede convertir un objeto como una clase más específica que tiene más métodos que la clase asignada real del objeto. Eso significa que el objeto solo se puede convertir como una superclase o la misma clase que la clase desde la que se creó la instancia. ¿Es correcto o estoy equivocado aquí? Todavía estoy aprendiendo, así que no estoy seguro de si esta es la forma correcta de ver las cosas.

También entiendo que este debería ser un ejemplo de reducción de emisiones, pero no estoy seguro de cómo funciona realmente si el tipo real no tiene los métodos de la clase a la que se está reduciendo la carga de este objeto. ¿La conversión explícita de alguna manera cambia el tipo real de objeto (no solo el tipo declarado), de modo que este objeto ya no es una instancia de la clase HeavyVehicle, sino que ahora se convierte en una instancia de la clase Truck?

Respuestas a la pregunta(6)

Su respuesta a la pregunta