OOPS concepts

OOPs stands for Object Oriented Programming. OOPs is a programming paradigm formulated around Objects which can hold attributes defining it behavior. The data of the objects can be modified by the methods. Concepts of OOPS include Abstraction, Polymorphism, Inheritance, Encapsulation.

The two building blocks of OOPs are Class and Object.

Class: can be defined as a collections of attributes and methods defining the behaviour of an object.

Object: Instance of a class having the values assigned to the properties of the class.Each object is said to be an instance of a particular class. Procedures in object-oriented programming are known as methods; variables are also known as fields, members, attributes, or properties.

Common terminology used in OOPs

oops concept in java

Polymorphism

The ability to identify a function to run is called Polymorphism. In java, c++ there are two types of polymorphism: compile time polymorphism (overloading) and runtime polymorphism (overriding).

Method overriding: Overriding occurs when a class method in a child class has the same name and signature as a method in the parent class. When you override methods, JVM determines the proper method to call at the program’s run time, not at the compile time.

Overloading: Overloading is determined at the compile time. It occurs when several methods have same names with:

Example of Overloading
int add(int a,int b)
 float add(float a,int b)
 float add(int a ,float b)
 void add(float a)
 int add(int a)
 void add(int a) //error conflict with the  method int add(int a)
class BookDetails {
  String title;
  setBook(String title){}
}
class ScienceBook extends BookDetails {
  setBook(String title){} //overriding
  setBook(String title, String publisher,float price){} //overloading
}

Inheritance

Inheritance allows a Child class to inherit properties from its parent class. In Java this is achieved by using extends keyword. Only properties with access modifier public and protected can be accessed in child class.

public class Parent {
  public String parentName;  
  public String familyName;

  protected void printMyName() {
    System.out.println(“ My name is “+ chidName+” “ +familyName);
  }
}
public class Child extends Parent {
  public String childName;
  public int childAge;
  //inheritance
  protected void printMyName() {
    System.out.println(“ My child name is “+ chidName+” “ +familyName);
  }
}

In a example above the child has inherited its family name from the parent class just by inheriting the class. When a child object is created the method printMyName() present in the child class is called.

Abstraction

Ans) Abstraction is a way of converting real world objects in terms of class. It's a concept of defining an idea in terms of classes or interface. For example creating a class Vehicle and injecting properties into it. E.g

public class Vehicle {
  public String colour;
  public String model;
}

Encapsulation

The encapsulation is achieved by combining the methods and attribute into a class. The class acts like a container encapsulating the properties. The users are exposed mainly public methods.The idea behind is to hide how things work and just exposing the requests a user can do.


Recommend Reading

  1. How java manages Memory?
  2. Why is it advised to use hashcode and equals together?
  3. Comparable and Comparator in java
  4. How to create Singleton class in Java?
  5. Difference between equals and ==?
  6. When to use abstract class over interface?
  7. Difference between final, finally and finalize
  8. Why is it recommended to use Immutable objects in Java