Если вы создаете фрукт, это не яблоко. Вы не можете перевернуть его, потому что он, вероятно, не будет иметь всех необходимых атрибутов. Если вы хотите Apple, создайте Apple. Вам не нужно ничего передавать чему-либо.
Я подозреваю, что будет работать следующее:
Fruit a = new Apple();
System.Diagnostics.Debug.Print("Apple name: " + a.Name);
... но я не программист на Java. Это в основном то, что вы делаете в C ++. (Обязательно прочитайте ссылку на абстрактный шаблон фабрики, приведенную в другом ответе, особенно если вам нужно создать несколько разных подтипов Fruit.)