Kapsulatzeari esker, elkarri lotutako atributu eta metodo guztiak klase batean zentralizatuta daudenez, erraza da kode hori hainbat programatan berriz erabiltzea, mota horretako objektu bat instantziatuz.
Ez digu axola klasea barrutik nola dagoen inplementatuta, zer egin dezakegun eta nola erabiltzen den jakitea besterik ez zaigu interesatzen.
Adibide batekin azalduta, ArrayLista izeneko klasea badugu, bost metodo dituela jakin nahi dugu:
- posizio jakin batean elementu bat gehitzeko,
- beste bat, elementua posizio jakin batetik ezabatzeko,
- beste bat, kokapen jakin batean dagoen elementua kontsultatzeko,
- Array-an zenbat elementu dauden esaten digun bat, eta
- pasatzen zaion parametroaren balioaren arabera, goranzko edo beheranzko array ordenatua itzultzen duen metodoa. Nola dago ezarrita, ez zaigu interesatzen. ArrayLista klaseak ongi funtzionatzen badu, edozein programatan erabil dezakegu. Hau da, berrerabili ahal izango dugu.
Hain erraza dirudien hori, programatzaile hasiberriarentzat ez da hain sinplea, klaseen diseinuan abstrakzio-prozesu bat behar baitu, eta ez baitago horretara ohituta. Oso ondo pentsatu behar da zer atributu eta metodo izango dituen klaseak gaur egungo beharrak asetzeko, eta atea zabalik utzi etorkizuneko hobekuntzetarako. Beraz, diseinatuko den klasea une horretan konpontzen ari den arazotik haratago erabiliko dela aurreikusten bada —hau da, berrerabiltzea aurreikusten bada—, abstrakzio-gaitasun handiagoa izan behar dugu.

Object klaseak (array atributoa Objektu bezala izendatuta dago, orduan, beste klase batetik instatziatu ahal da bertako elementu listara sartzeko), Object klasea/mota gisa deklaratutako objektuari edozein klase esleitzeko aukera ematen du. Hau da, Object klasea klase guztien aita edo superklasea da, orduan, klase berri batetik esleitu ahal da elementuak ordenatzeko edo eta kentzeko.