Tienes un claro problema de concepto aquí. Si defines la variable base como objeto de tipo ClaseBase, lo único que vas a poder hacer con ella es lo que declares en ClaseBase y en sus clases padres (si las tuviera). Precisamente, por ser la clase base, no puedes invocar métodos que defines en las clases derivadas, porque la clase base no sabe nada de lo que declaran sus clases derivadas.
Así que si quieres llamar a métodos de las clases derivadas, tu variable ha de ser de tipo ClaseDerivada, así que o haces un casting desde la variable base (no recomendable porque es propenso a errores), o desde el principio usas una variable derivada. En tu caso, no tiene sentido usar una variable base.
Recuerda: una variable es tratada como su tipo y el de sus padres, pero nunca como el de sus hijas.