Monofaktoriellt (eller enfaktoriellt) arv är en typ av arv där varje medlem i en klass bara ärver en förälderklass. Detta innebär att varje instans av en klass bara har en databas, som innehåller alla dess egenskaper och metoder.
Monofaktoriellt arv har sina fördelar och nackdelar. Å ena sidan förenklar detta koden och gör den mer begriplig, eftersom varje metod eller egenskap bara har en förälder. Det undviker också namnkonflikter eftersom alla klassmedlemmar har unika namn.
Men monofaktoriellt arv har också vissa begränsningar. Till exempel, om en klass ärver från flera överordnade klasser, kan den bara ha de egenskaper och metoder som definierades i var och en av de överordnade klasserna. Detta kan göra att klassen innehåller redundanta egenskaper och metoder, vilket gör den svår att använda.
Dessutom kan monofaktoriellt arv vara ineffektivt om överordnade klasser har många egenskaper och metoder gemensamma. I det här fallet kommer varje instans av klassen att innehålla mycket dubblettdata, vilket kan leda till en ökning av storleken på databasen och sakta ner programmet.
I allmänhet är monofaktoriellt arv ett bra val för enkla klasser som inte har många egenskaper och metoder, och som inte kräver datadelning mellan överordnade klasser. Men om klasserna har en komplex struktur och delar data kan det vara mer effektivt att använda multifaktoriellt eller sammansatt arv.