Hard skills
Java basics: class, Git, OOP principles
24 Feb 2023

Created in 1995, Java will soon celebrate its 30th anniversary. It is a whole epoch for IT, and although the industry is developing at a breakneck pace, the general-purpose adaptive Java language is still popular and sought after. Since so many products are written in Java, the demand for skilled Java developers will remain consistently high in the coming years.

So, if you have decided to learn this somewhat complex but promising programming language, here are five basic concepts that every beginner should know. Oleksandr Semianikhin, Software Engineer at EPAM, explains the subject.

Most searches for new developers are about Object-Oriented Programming, the alpha and omega of the Java programming language. What exactly is it?

In this programming paradigm, you think of a program as a collection of interacting objects. It helps programmers create readable, secure, and low-maintenance code. Simply put, OOP allows you to read code like a book. Encapsulation, inheritance, and polymorphism are three key OOP principles to understand.


Encapsulation is about hiding the implementation mechanism of any action. A human body is the most obvious example of encapsulation. We breathe, walk, sleep, and eat without much consideration for the internal processes and systems at work, at least so long we are all right. Something similar happens in programming. 

Or take household appliances, for instance. Users mostly care about what they can do with this or that device, but how it works remains hidden from scrutiny.


This principle allows you to create a new object based on an existing one. For example, a furniture manufacturer assembles a cabinet according to a specific design. Customer feedback makes it clear that the cabinet lacks one more shelf. Designers only add the missing piece rather than completely redoing the blueprint. In the language of developers, they add another state to this object.

The "motion" state distinguishes the "person" object from the "driver" and "pedestrian" objects. You don't have to create an object from scratch to create a new class; simply inherit from the "person" object and add a new state.

That is, inheritance allows developers to reuse existing code while modifying it to meet current requirements.


The same interface can have many implementations. The principle of polymorphism allows you to redefine the object’s behavior. Remember the cabinet from the previous example? Its doors can be hinged and open outward, or they can be roller-mounted and move along rails. In other words, when the polymorphism principle is applied, different behaviors emerge for the same internal object, the "door." 

An example from practice: we have developed a solution for a supermarket chain with offices in different countries, each having different legal requirements and restrictions. As a result, we are unable to offer a unified code. We must alter it following specific local legal requirements. Here, the polymorphism principle also comes in handy.

Class and object

The concepts of class and object are central to the object-oriented Java programming language. Let's go back to the cabinet example to explain the distinction. The blueprint for this piece of furniture is a class, a blank on which you can work, and the cabinet itself is an object. Using the same blueprint, you can build a pink, white, or black cabinet since the class determines the object's structure and functions.

Git version control system

Development teams use version control systems. Typically, it would be Git. Why do you need such systems? Today, in IT projects, where hundreds of developers can work on a single software solution simultaneously, they are absolutely essential. Git is a practical, handy tool for code collaboration. For this reason, we emphasize learning how to use Git in our training programs.

Version control systems safeguard against errors and allow you to return to a previous checkpoint where "everything worked" with minimal loss of functioning code if an error occurs. Git provides another useful feature: programmers can create branches from the main project branch and work independently of other team members. These “branch offshoots” are essentially developer drafts, usually deleted after merging with the project's main branch. 

It is critical to distinguish between GitHub, an online repository of project version histories, and Git, a version control system. Git and GitHub are frequently used together as a single project management tool.

At EPAM, we offer a variety of Java educational programs for candidates with different levels of preparedness. Check out the list of available programs in Java direction and join us!