W programowaniu obiektowym funkcja wirtualna lub metoda wirtualna to funkcja lub metoda, której zachowanie można przesłonić w klasie dziedziczącej przez funkcję o tej samej sygnaturze. Ta koncepcja jest bardzo ważną częścią części polimorfizmu programowania obiektowego (OOP).