Пример из лекции:
class Animal
{
  public void doAnimalActions(){}
}
class Cat extends Animal
{
  public void doCatActions(){}
}
class Tiger extends Cat
{
  public void doTigerActions(){}
}


public static void main(String[] args)
{
  Object obj = new Tiger();
  Animal animal = (Animal) obj;
  Cat cat = (Cat) obj;
  Tiger tiger = (Tiger) animal;
  Tiger tiger2 = (Tiger) cat;
}
Если мы в Tiger добавим новые методы конкретно для тигра, то строчка Tiger tiger = (Tiger) animal означает, что наш animal приобретет новы методы. То есть его функционал расширится. Но это называется сужением типа. Почему? Тип сужается в каком-то другом смысле?