4-те основни принципа в Обектно-ориентираното програмиране са:
1. Наследяване - Inheritance
2. Капсулация - Encapsulation
3. Полиморфизъм - Polymorphism
4. Абстракция - Abstraction
1. Наследяване - Inheritance
Наследяването е принцип, при който ако един обект-обект1 съдържа всички свойства и действия на друг обект - обект2, то обект1 може да наследи обект2. По този начин обект1 освен собствените си атрибути и операции приема и тези на базовия клас/родителя си, а именно на обект2. По този начин се избягва повторното дефиниране и има възможността от създаването на йерархии от класове. Например имаме клас Animal, който представлява абстракция за множеството от всички животни. Всички обекти от класа Animal имат общи характеристики(color, age) и обща функционалност(Eat,Walk). Класът Dog, който е множество от всички кучета, има операции Eat, Walk и Bark. Удачно е класът Dog да наследи класа Animal. По този начин Dog ще има описание на собственото си действие Bark, и ще наследи Eat и Walk от базовия клас - Animal. Чрез наследяването се моделира "is-a" отношението между обектите. Например можем да твърдим, че кучето е животно, тъй като то може да прави всичко, което животното прави и притежава всички негови характеристики.
2.Капсулация - наричано още "скриване на данните".
За даден обект, данните и операциите върху тях са събрани в една структура, наречена клас. Така обекта се разглежда в "черна кутия". Скриват се ненужните детайли за обекта и се показват само най-важните негови характеристики на външния свят. Капсулацирането на данните намалява глобалните променливи. Ограничава възможността на потребителя да променя вътрешното състояние на даден обект по неочакван начин. Един клас имат интерфейси, които определят как другите класове могат да взаимодействат с него.
3. Полиморфизъм - Polymorphism
Полиморфизъм представлява свойството на обектите от един и същи тип да имат един и същ интерфейс, но с различна реализация на този интерфейс. Думата полиморфизъм идва от гръцките думи poly-"много", morphе-"форма". Например ако имаме базов клас Animal, който има действието Talk и разгледаме наследниците на класа Animal, които са класовете Dog и Cat. Всеки от тях реализира метода Talk по свой собствен начин. Тъй като ако имаме куче, то ще лае, ако имаме котка тя ще мяучи. В този случай издаването на звук от животното е полиморфно действие - такова, което се реализира по различен начин в различните наследници на базовия клас.
4. Абстракция - Abstraction
Абстракцията е нещо с което знаем как да работим, но не знаем как изглежда вътрешно. Например имаме лаптоп. Не е нужно да знаем как работи лаптопът отвътре, за да го използваме. Същото се получава и с обектите в Обектно-ориентираното програмиране. Абстракцията е нещо, което
правим всеки ден. Игнорираме всички малки детайли и се вглеждаме само в тези, които имат значение за нас в текущия момент. Абстракцията е една от най-важните концепции в ООП. Тя ни позволява да пишем код, който работи със такива структури от данни, които са абстрактни. С абстрактните структури се работи лесно, тъй като не е нужно да знаем как са имплементирани, а само ги използваме. Абстракцията ни позволява и да дефинираме интерфейс на нашите програми. Благодарение на тези интерфейси се пишат няколко по-малки програми, всяка от които извършва малка задача. Абстракция а ни помага при преизползването на код. Малките подпрограми се наричат компоненти. Широко разпространение намира този начин на писане на програми, тъй като се преизползват не само обекти, но и цели подпрограми.