Polymorphism is one of the four fundamental OOP principles. It is the ability to present the same interface for differing underlying types. In terms of .NET, for example, polymorphism means that at run time, objects of a subclass may be treated as objects of a superclass in places of their use, such as collections or method parameters. When this occurs, the object's actual type at run-time is no longer identical to its declared type. There are several kinds of polymorphism.
A comprehensive list of technical interview questions and answers for software developers
Object-oriented programming or OOP is programming model based on the concepts of "objects", which are data structures that contain data, in the form of fields, and code, in the form of methods. In addition, programmers can create relationships between objects. For example, objects can inherit data and methods from other objects. Program, designed with OOP approach, is maked of objects that interact with one another. Most popular languages have class-based OOP, meaning that objects are instances of classes, which typically also determines their type.
Object composition in OOP refers to combining two or more different classes with purpose of creating new, more complex class. Usually it looks like an object that contains another object. "Сontains" means object has reference to other one.
Prototype-based programming is a style of object-oriented programming in which inheritance is implemented via process of cloning existing objects that serve as prototypes. There are two methods of constructing new objects: object creation "from nothing" or through cloning an existing object.
Inheritance represents the relationship between two objects or two classes where one derives functionality from another and then extends it by adding new fields, properties or methods. It is one of the fundamental concepts of the object-oriented programming along with polymorphism, abstraction and encapsulation. Inheritance allows classes to inherit commonly used state and behavior from other classes, so it is one of the main tools of code reuse in OOP.
A library is a reusable set of code which software developer can use as it comes from its creators. Library usually focuses on a narrow set of functionality, which user accesses through an API. It performs specific, well-defined operations. User calls a library function, it executes some code and then control is returned to developer's code. Usually, it does not provide any hooks for developer to extend or override its behavior.
A software framework is an abstraction used in software development to provide generic functionality for application-specific needs. It is a programming platform, which contains common code with range of generic features, which might be selectively used, overridden or specialized by developers to suit their requirements for the particular application.