Arv inom programmering är en teknik där en klass, kallad barnklass eller underklass, kan ärva egenskaper (metoder och variabler) från en annan klass, kallad föräldraklass eller överklass. På den högsta nivån kan man tänka sig att klassen ”fordon” kan ha egenskaper som ”hastighet” och ”vikt”. Genom att låta ”bil” och ”cykel” ärva från ”fordon”, så får ”bil” och ”cykel” automatiskt dessa egenskaper, utan att vi behöver skriva om samma kod för varje enskild fordonstyp.
En stor fördel med arv är att vi kan skapa kod som är generell på en hög nivå, men som sedan kan specialiseras för olika användningsområden genom arvet. Varje barnklass kan nämligen skriva över, eller utöka, de egenskaper den ärver från sin föräldraklass. Till exempel kan ”bil” lägga till en egenskap som ”antal dörrar”, och ”cykel” kan lägga till ”antal pedaler”, samtidigt som båda fortfarande delar de grundläggande egenskaperna som definierar ett fordon.
Ingenjörerna bakom språken C++, Java, Python och många andra har byggt stöd för denna form av kodorganisation i deras respektive programmeringsspråk, med några små variationer. Det kan till exempel vara hur privat, skyddade och offentliga egenskaper hanteras mellan förälder- och barnklasser, eller om ett barn kan härstamma från flera föräldraklasser eller ej. Dessa skillnader gör dock inte att konceptet arv blir mindre centralt i dessa språk: oavsett om du arbetar med Java, Python eller C++, är kunskapsdomän om arv ovärderlig.