De verschillen zijn: - Instanties van een generieke package worden statisch gecreëerd en instanties van een klasse worden dynamisch gecreëerd - Voor de procedure- en functienamen van een package geldt statische scoping; voor de methodenamen van een klasse geldt dynamische dispatch - Bij een generieke package kan geen sprake zijn van overerving, zoals dat bij klassen in OO-talen wel geval is. Instanties van een generieke package zijn geen eerste-klaswaarden en kunnen in tegenstelling tot instanties van een klasse niet als argument of resultaat van een operatie gebruiken. - In een package is de omgeving waarop een procedure effect heeft, volledig gefixeerd; in een objectgeorienteerde benadering wordt de omgeving waarop een methode effect heeft, bepaald door het ontvangende object. - Bij een generieke package is het mogelijk variabelen rechtstreeks van buitenaf toegankelijk te maken, terwijl variabelen van een object alleen via een methode toegankelijk zijn.
De overeenkomsten zijn: - Zowel in een generieke package als in een klasse worden geëxporteerde functies en procedures (methoden) en verborgen variabelen (attributen) gedefinieerd. - Zowel van een generieke package als van een klasse kunnen instanties worden gecreëerd met hun eigen verzameling variabelen (attributen) en functies en procedures (methoden).