Java OOPs Concepts


What is Object?

Any entity that has state and behavior is known as an object. For example: chair, pen, table, keyboard, bike etc. It can be physical and logical.

What is a Class?

Collection of objects is called class. It is a logical entity.

What is Inheritance and advantages of it?

When one object acquires all the properties and behaviours of parent object i.e. known as inheritance. It provides code reusability. It is used to achieve runtime polymorphism.

How to achive polymorphism in Java?

When one task is performed by different ways i.e. known as polymorphism. For example: to convense the customer differently, to draw something e.g. shape or rectangle etc.
In java, we use method overloading and method overriding to achieve polymorphism.
Another example can be to speak something e.g. cat speaks meaw, dog barks woof etc.

What is Abstraction?

Hiding internal details and showing functionality is known as abstraction. For example: phone call, we don't know the internal processing.
In java, we use abstract class and interface to achieve abstraction.

What is Encapsulation?

Binding (or wrapping) code and data together into a single unit is known as encapsulation. For example: capsule, it is wrapped with different medicines.
A java class is the example of encapsulation. Java bean is the fully encapsulated class because all the data members are private here.


Advantage of OOPs over Procedure-oriented programming language

1)OOPs makes development and maintenance easier where as in Procedure-oriented programming language it is not easy to manage if code grows as project size grows.
2)OOPs provides data hiding whereas in Procedure-oriented prgramming language a global data can be accessed from anywhere.
3)OOPs provides ability to simulate real-world event much more effectively. We can provide the solution of real word problem if we are using the Object-Oriented Programming language.


Naming conventions in java

By using standard Java naming conventions, you make your code easier to read for yourself and for other programmers. Readability of Java program is very important. It indicates that less time is spent to figure out what the code does.

But, it is not forced to follow. So, it is known as convention not rule.


NameConvention
class nameshould start with uppercase letter and be a noun e.g. String, Color, Button, System, Thread etc.
interface nameshould start with uppercase letter and be an adjective e.g. Runnable, Remote, ActionListener etc.
method nameshould start with lowercase letter and be a verb e.g. actionPerformed(), main(), print(), println() etc.
variable nameshould start with lowercase letter e.g. firstName, orderNumber etc.
package nameshould be in lowercase letter e.g. java, lang, sql, util etc.
constants nameshould be in uppercase letter. e.g. RED, YELLOW, MAX_PRIORITY etc.



Object and Class in Java


What are the different ways to create an object in Java?

There are many ways to create an object in java. They are:
  • By new keyword
  • By newInstance() method
  • By clone() method
  • By factory method etc.



What is Annonymous object?

Annonymous simply means nameless.An object that have no reference is known as annonymous object.
If you have to use an object only once, annonymous object is a good approach.

more details...

Method Overloading in Java


Advantage of method overloading?

Method overloading increases the readability of the program.


Different ways to overload the method

There are two ways to overload the method in java
  1. By changing number of arguments
  2. By changing the data type

Constructor in Java


Rules for creating constructor

There are basically two rules defined for the constructor.
  1. Constructor name must be same as its class name
  2. Constructor must have no explicit return type

Types of constructors

There are two types of constructors:
  1. default constructor (no-arg constructor)
  2. parameterized constructor

What is the purpose of default constructor?

Default constructor provides the default values to the object like 0, null etc. depending on the type.



Why use parameterized constructor?

Parameterized constructor is used to provide different values to the distinct objects.


Constructor Overloading

Constructor overloading is a technique in Java in which a class can have any number of constructors that differ in parameter lists.The compiler differentiates these constructors by taking into account the number of parameters in the list and their type.


What is the difference between constructor and method ?

There are many differences between constructors and methods. They are given below.

ConstructorMethod
Constructor is used to initialize the state of an object.Method is used to expose behaviour of an object.
Constructor must not have return type.Method must have return type.
Constructor is invoked implicitly.Method is invoked explicitly.
The java compiler provides a default constructor if you don't have any constructor.Method is not provided by compiler in any case.
Constructor name must be same as the class name.Method name may or may not be same as class name.

Does constructor return any value?

yes,that is current class instance (You cannot use return type yet it returns a value).


Can constructor perform other tasks instead of initialization?

Yes, like object creation, starting a thread, calling method etc. You can perform any operation in the constructor as you perform in the method.




static keyword


The static keyword is used in java mainly for memory management. We may apply static keyword with variables, methods, blocks and nested class. The static keyword belongs to the class than instance of the class.
The static can be:
  1. variable (also known as class variable)
  2. method (also known as class method)
  3. block
  4. nested class

Advantage of static variable

It makes your program memory efficient (i.e it saves memory).


static method

If you apply static keyword with any method, it is known as static method
  • A static method belongs to the class rather than object of a class.
  • A static method can be invoked without the need for creating an instance of a class.
  • static method can access static data member and can change the value of it.

Restrictions for static method

There are two main restrictions for the static method. They are:
  1. The static method can not use non static data member or call non-static method directly.
  2. this and super cannot be used in static context.

static block

  • Is used to initialize the static data member.
  • It is executed before main method at the time of classloading.

Can we execute a program without main() method?

Yes, one of the way is static block but in previous version of JDK not in JDK 1.7.


Usage of this keyword

Here is given the 6 usage of this keyword.
  1. this keyword can be used to refer current class instance variable.
  2. this() can be used to invoke current class constructor.
  3. this keyword can be used to invoke current class method (implicitly)
  4. this can be passed as an argument in the method call.
  5. this can be passed as argument in the constructor call.
  6. this keyword can also be used to return the current class instance.

The this keyword can be used to refer current class instance variable.

If there is ambiguity between the instance variable and parameter, this keyword resolves the problem of ambiguity.



this() can be used to invoked current class constructor.

The this() constructor call can be used to invoke the current class constructor (constructor chaining). This approach is better if you have many constructors in the class and want to reuse that constructor.


Where to use this() constructor call?

The this() constructor call should be used to reuse the constructor in the constructor. It maintains the chain between the constructors i.e. it is used for constructor chaining. Let's see the example given below that displays the actual use of this keyword.

The this keyword can be used to invoke current class method (implicitly).

You may invoke the method of the current class by using the this keyword. If you don't use the this keyword, compiler automatically adds this keyword while invoking the method. Let's see the example

this keyword can be passed as an argument in the method.

The this keyword can also be passed as an argument in the method. It is mainly used in the event handling

The this keyword can be passed as argument in the constructor call.

We can pass the this keyword in the constructor also. It is useful if we have to use one object in multiple classes.

The this keyword can be used to return current class instance.

We can return the this keyword as an statement from the method. In such case, return type of the method must be the class type (non-primitive).


Inheritance in Java


The idea behind inheritance is that you can create new classes that are built upon existing classes. When you inherit from an existing class, you reuse (or inherit) methods and fields, and you add new methods and fields to adapt your new class to new situations.

Inheritance is a mechanism in which one object acquires all the properties and behaviours of parent object.

Inheritance represents the IS-A relationship.


Types of Inheritance

On the basis of class, there can be three types of inheritance: single, multilevel and hierarchical.
Multiple and Hybrid is supported through interface only.

Why multiple inheritance is not supported in java?

  • To reduce the complexity and simplify the language, multiple inheritance is not supported in java.

What is this in java?

It is a keyword that that refers to the current object.more details...



What is Inheritance?

Inheritance is a mechanism in which one object acquires all the properties and behaviour of another object of another class. It represents IS-A relationship. It is used for Code Resusability and Method Overriding.more details...



Which class is the superclass for every class.

Object class.



Why multiple inheritance is not supported in java?

  • To reduce the complexity and simplify the language, multiple inheritance is not supported in java in case of class.more details...

What is composition?

Holding the reference of the other class within some other class is known as composition.

What is difference between aggregation and composition?

Aggregation represents weak relationship whereas composition represents strong relationship. For example: bike has an indicator (aggregation) but bike has an engine (compostion).

Why Java does not support pointers?

Pointer is a variable that refers to the memory address. They are not used in java because they are unsafe(unsecured) and complex to understand.



What is super in java?

It is a keyword that refers to the immediate parent class object.more details...



Can you use this() and super() both in a constructor?

No. Because super() or this() must be the first statement.


What is object cloning?

The object cloning is used to create the exact copy of an object. more details...



Aggregation in Java

If a class have an entity reference, it is known as Aggregation. Aggregation represents HAS-A relationship.



Method Overriding in Java


In other words, If subclass provides the specific implementation of the method that has been provided by one of its parent class, it is known as Method Overriding.If subclass (child class) has the same method as declared in the parent class, it is known as method overriding.


Advantage of Java Method Overriding

  • Method Overriding is used to provide specific implementation of a method that is already provided by its super class.
  • Method Overriding is used for Runtime Polymorphism

Rules for Method Overriding

  1. method must have same name as in the parent class
  2. method must have same parameter as in the parent class.
  3. must be IS-A relationship (inheritance).

Can we override static method?

No, static method cannot be overridden. It can be proved by runtime polymorphism so we will learn it later.


Why we cannot override static method?

because static method is bound with class whereas instance method is bound with object. Static belongs to class area and instance belongs to heap area.



Can we override java main method?

No, because main is a static method.


What is the difference between method Overloading and Method Overriding?

There are three basic differences between the method overloading and method overriding. They are as follows:

Method OverloadingMethod Overriding
1) Method overloading is used to increase the readability of the program.Method overriding is used to provide the specific implementation of the method that is already provided by its super class.
2) method overloading is performed within a class.Method overriding occurs in two classes that have IS-A relationship.
3) In case of method overloading parameter must be different.In case of method overriding parameter must be same.


Covariant Return Type

The covariant return type specifies that the return type may vary in the same direction as the subclass.
Before Java5, it was not possible to override any method by changing the return type. But now, since Java5, it is possible to override method by changing the return type if subclass overrides any method whose return type is Non-Primitive but it changes its return type to subclass type


super keyword

The super is a reference variable that is used to refer immediate parent class object.
Whenever you create the instance of subclass, an instance of parent class is created implicitly i.e. referred by super reference variable.

Usage of super Keyword

  1. super is used to refer immediate parent class instance variable.
  2. super() is used to invoke immediate parent class constructor.
  3. super is used to invoke immediate parent class method.


Instance initializer block:


Instance Initializer block is used to initialize the instance data member. It run each time when object of the class is created.
The initialization of the instance variable can be directly but there can be performed extra operations while initializing the instance variable in the instance initializer block.


Why use instance initializer block?

Suppose I have to perform some operations while assigning value to instance data member e.g. a for loop to fill a complex array or error handling etc.


Rules for instance initializer block :

There are mainly three rules for the instance initializer block. They are as follows:
  1. The instance initializer block is created when instance of the class is created.
  2. The instance initializer block is invoked after the parent class constructor is invoked (i.e. after super() constructor call).
  3. The instance initializer block comes in the order in which they appear.

Final Keyword In Java


variable
The final keyword in java is used to restrict the user. The final keyword can be used in many context. Final can be:
  1. variable
  2. method
  3. class
The final keyword can be applied with the variables, a final variable that have no value it is called blank final variable or uninitialized final variable. It can be initialized in the constructor only. The blank final variable can be static also which will be initialized in the static block only. We will have detailed learning of these. Let's first learn the basics of final keyword.


final variable

If you make any variable as final, you cannot change the value of final variable(It will be constant).

final method

If you make any method as final, you cannot override it.

final class

If you make any class as final, you cannot extend it.

Is final method inherited?

Ans) Yes, final method is inherited but you cannot override it.

 What is blank or uninitialized final variable?

A final variable that is not initialized at the time of declaration is known as blank final variable.
If you want to create a variable that is initialized at the time of creating object and once initialized may not be changed, it is useful. For example PAN CARD number of an employee.
It can be initialized only in constructor.

Can we initialize blank final variable?

Yes, but only in constructor. 

static blank final variable

A static final variable that is not initialized at the time of declaration is known as static blank final variable. It can be initialized only in static block.

What is final parameter?

If you declare any parameter as final, you cannot change the value of it.

Can we declare a constructor final?

No, because constructor is never inherited.


Runtime Polymorphism in Java


In this process, an overridden method is called through the reference variable of a superclass. The determination of the method to be called is based on the object being referred to by the reference variable.

Runtime polymorphism or Dynamic Method Dispatchis a process in which a call to an overridden method is resolved at runtime rather than compile-time.
Let's first understand the upcasting before Runtime Polymorphism.



Upcasting

When reference variable of Parent class refers to the object of Child class, it is known as upcasting



Runtime Polymorphism with data member

Method is overridden not the datamembers, so runtime polymorphism can't be achieved by data members.
In the example given below, both the classes have a datamember speedlimit, we are accessing the datamember by the reference variable of Parent class which refers to the subclass object. Since we are accessing the datamember which is not overridden, hence it will access the datamember of Parent class always.


Static Binding and Dynamic Binding



Connecting a method call to the method body is known as binding.
There are two types of binding
  1. static binding (also known as early binding).
  2. dynamic binding (also known as late binding).

static binding

When type of the object is determined at compiled time(by the compiler), it is known as static binding.
If there is any private, final or static method in a class, there is static binding.



Dynamic binding

When type of the object is determined at run-time, it is known as dynamic binding.

more details...


instanceof operator


The instanceof operator is used to test whether the object is an instance of the specified type (class or subclass or interface).

The instanceof operator is also known as type comparison operator because it compares the instance with type. It returns either true or false. If we apply the instanceof operator with any variable that have null value, it returns false.
The instanceof operator is used to test whether the object is an instance of the specified type (class or subclass or interface).

imple example of instanceof operator


Let's see the simple example of instance operator where it tests the current class.

  1. class Simple{  
  2.  public static void main(String args[]){  
  3.  Simple s=new Simple();  
  4.  System.out.println(s instanceof Simple);//true  
  5.  }  
  6. }  
Output:true

Downcasting with instanceof operator



When Subclass type refers to the object of Parent class, it is known as downcasting. If we perform it directly, compiler gives Compilation error. If you perform it by typecasting, ClassCastException is thrown at runtime. But if we use instanceof operator, downcasting is possible.


more details...


Abstract class in Java


A class that is declared with abstract keyword, is known as abstract class. Before learning abstract class, let's understand the abstraction first.

Abstraction


Abstraction is a process of hiding the implementation details and showing only functionality to the user.
Another way, it shows only important things to the user and hides the internal details for example sending sms, you just type the text and send the message. You don't know the internal processing about the message delivery.
Abstraction lets you focus on what the object does instead of how it does it.

Ways to achieve Abstaction


There are two ways to achieve abstraction in java
  1. Abstract class (0 to 100%)
  2. Interface (100%)


Abstract class


A class that is declared as abstract is known as abstract class. It needs to be extended and its method implemented. It cannot be instantiated.

abstract method

A method that is declared as abstract and does not have implementation is known as abstract method.

Understanding the real scenario of abstract class


In this example, Shape is the abstract class, its implementation is provided by the Rectangle and Circle classes. Mostly, we don't know about the implementation class (i.e. hidden to the end user) and object of the implementation class is provided by the factory method.
factory method is the method that returns the instance of the class.

Abstract class having constructor, data member, methods etc.

Note: An abstract class can have data member, abstract method, method body, constructor and even main() method.


Rule: If there is any abstract method in a class, that class must be abstract.


Rule: If you are extending any abstact class that have abstract method, you must either provide the implementation of the method or make this class abstract.

Another real scenario of abstract class


The abstract class can also be used to provide some implementation of the interface. In such case, the end user may not be forced to override all the methods of the interface.

Note: If you are beginner to java, learn interface first and skip this example.



What is abstraction?


Abstraction is a process of hiding the implementation details and showing only functionality to the user.more details...
Abstraction lets you focus on what the object does instead of how it does it.

What is the difference between abstraction and encapsulation?


Abstraction hides the implementation details whereas encapsulation hides the data.more details...
Abstraction lets you focus on what the object does instead of how it does it.

What is abstract class?


A class that is declared as abstract is known as abstract class.It needs to be extended and its method implemented.It cannot be instantiated. more details...

Can there be any abstract method without abstract class?


No, if there is any abstract method in a class, that class must be abstract.

Can you use abstract and final both with a method?

No, because abstract method needs to be overridden whereas you can't override final method.

Is it possible to instantiate the abstract class?

No, abstract class can never be instantiated.
more details...


Interface in Java


An interface is a blueprint of a class. It has static constants and abstract methods.

The interface is
 a mechanism to achieve fully abstraction in java. There can be only abstract methods in the interface. It is used to achieve fully abstraction and multiple inheritance in Java.An interface is a blueprint of a class. It has static constants and abstract methods.

Interface also represents IS-A relationship.
It cannot be instantiated just like abstract class.

Why use Interface?


There are mainly three reasons to use interface. They are given below.
  • It is used to achieve fully abstraction.
  • By interface, we can support the functionality of multiple inheritance.
  • It can be used to achieve loose coupling.

The java compiler adds public and abstract keywords before the interface method and public, static and final keywords before data members.

In other words, Interface fields are public, static and final bydefault, and methods are public and abstract.


Understanding relationship between classes and interfaces


As shown in the figure given below, a class extends another class, an interface extends another interface but a class implements an interface.

relationship between class and interface

Multiple inheritance in Java by interface


If a class implements multiple interfaces, or an interface extends multiple interfaces i.e. known as multiple inheritance.

 multiple inheritance in java


Q) Multiple inheritance is not supported in case of class but it is supported in case of interface, why?


As we have explained in the inheritance chapter, multiple inheritance is not supported in case of class. But it is supported in case of interface because there is no ambiguity as implementation is provided by the implementation class.

Note: A class implements interface but One interface extends another interface .



What is marker or tagged interface ?


An interface that have no member is known as marker or tagged interface. For example: Serializable, Cloneable, Remote etc. They are used to provide some essential information to the JVM so that JVM may perform some useful operation.


Nested Interface


Note: An interface can have another interface i.e. known as nested interface. We will learn it in detail in the nested classes chapter.

What is interface?


Interface is a blueprint of a class that have static constants and abstract methods.It can be used to achive fully abstraction and multiple inheritance. more details...

Can you declare an interface method static?


No, because methods of an interface is abstract bydefault, and static and abstract keywords can't be used together.

Can an Interface be final?


No, because its implementation is provided by another class.

What is marker interface?


An interface that have no data member and method is known as a marker interface.For example Serializable,Cloneable etc.

What is difference between abstract class and interface?


1)An abstract class can have method body (non-abstract methods).Interface have only abstract methods.
2)An abstract class can have instance variables.An interface cannot have instance variables.
3)An abstract class can have constructor.Interface cannot have constructor.
4)An abstract class can have static methods.Interface cannot have static methods.
5)You can extends one abstract class.You can implement multiple interfaces.


Can we define private and protected modifiers for variables in interfaces?


No, they are implicitely public.

When can an object reference be cast to an interface reference?


An object reference can be cast to an interface reference when the object implements the referenced interface.


Encapsulation in Java


Encapsulation is a process of wrapping code and data together into a single unit e.g. capsule i.e mixed of several medicines.

We can create a fully encapsulated class by making all the data members of the class private. Now we can use setter and getter methods to set and get the data in it.
Java Bean is the example of fully encapsulated class.

Advantage of Encapsulation


By providing only setter or getter method, you can make the class read-only or write-only.
It provides you the control over the data. Suppose you want to set the value of id i.e. greater than 100 only, you can write the logic inside the setter method.


more details...


Object class in Java


The Object class is the parent class of all the classes in java bydefault. In other words, it is the topmost class of java.


The Object class is beneficial if you want to refer any object whose type you don't know. Notice that parent class reference variable can refer the child class object, know as upcasting.

Let's take an example, there is getObject() method that returns an object but it can be of any type like Employee,Student etc, we can use Object class reference to refer that object. For example:

  1. Object obj=getObject();//we don't what object would be returned from this method  

The Object class provides some common behaviours to all the objects such as object can be compared, object can be cloned, object can be notified etc.


Methods of Object class


The Object class provides many methods. They are as follows:

MethodDescription
public final ClassgetClass()returns the Class class object of this object. The Class class can further be used to get the metadata of this class.
public int hashCode()returns the hashcode number for this object.
public boolean equals(Object obj)compares the given object to this object.
protected Object clone() throws CloneNotSupportedExceptioncreates and returns the exact copy (clone) of this object.
public String toString()returns the string representation of this object.
public final void notify()wakes up single thread, waiting on this object's monitor.
public final void notifyAll()wakes up all the threads, waiting on this object's monitor.
public final void wait(long timeout)throws InterruptedExceptioncauses the current thread to wait for the specified milliseconds, until another thread notifies (invokes notify() or notifyAll() method).
public final void wait(long timeout,int nanos)throws InterruptedExceptioncauses the current thread to wait for the specified miliseconds and nanoseconds, until another thread notifies (invokes notify() or notifyAll() method).
public final void wait()throws InterruptedExceptioncauses the current thread to wait, until another thread notifies (invokes notify() or notifyAll() method).
protected void finalize()throws Throwableis invoked by the garbage collector before object is being garbage collected.


more details...


Object Cloning in Java


The object cloning is a way to create exact copy of an object. For this purpose, clone() method of Object class is used to clone an object.

The java.lang.Cloneable interface must be implemented by the class whose object clone we want to create. If we don't implement Cloneable interface, clone() method generatesCloneNotSupportedException.
The clone() method is defined in the Object class. Syntax of the clone() method is as follows:

  1. protected Object clone() throws CloneNotSupportedException  

Why use clone() method ?


The clone() method saves the extra processing task for creating the exact copy of an object. If we perform it by using the new keyword, it will take a lot of processing to be performed that is why we use object cloning.

Advantage of Object cloning


Less processing task.


more details...

Array in Java


Normally, array is a collection of similar type of elements that have contiguous memory location.
In java, array is an object the contains elements of similar data type. It is a data structure where we store similar elements. We can store only fixed elements in an array.
Array is index based, first element of the array is stored at 0 index.

java array


Advantage of Array

  • Code Optimization: It makes the code optimized, we can retrieve or sort the data easily.
  • Random access: We can get any data located at any index position.


Disadvantage of Array

  • Size Limit: We can store only fixed size of elements in the array. It doesn't grow its size at runtime. To solve this problem, collection framework is used in java.


Types of Array

There are two types of array.
  • Single Dimensional Array
  • Multidimensional Array


Single Dimensional Array


Syntax to Declare an Array in java

  1. dataType[] arrayRefVar; (or)  
  2. dataType []arrayRefVar; (or)  
  3. dataType arrayRefVar[];  


Instantiation of an Array in java

  1. arrayRefVar=new datatype[size];  

Declaration, Instantiation and Initialization of Java Array


We can declare, instantiate and initialize the java array together by:

  1. int a[]={33,3,4,5};//declaration, instantiation and initialization  

Multidimensional array


In such case, data is stored in row and column based index (also known as matrix form).

Syntax to Declare Multidimensional Array in java


  1. dataType[][] arrayRefVar; (or)  
  2. dataType [][]arrayRefVar; (or)  
  3. dataType arrayRefVar[][]; (or)  
  4. dataType []arrayRefVar[];   


Example to instantiate Multidimensional Array in java


  1. int[][] arr=new int[3][3];//3 row and 3 column  


Example to initialize Multidimensional Array in java

  1. arr[0][0]=1;  
  2. arr[0][1]=2;  
  3. arr[0][2]=3;  
  4. arr[1][0]=4;  
  5. arr[1][1]=5;  
  6. arr[1][2]=6;  
  7. arr[2][0]=7;  
  8. arr[2][1]=8;  
  9. arr[2][2]=9;  

What is class name of java array?


In java, array is an object. For array object, an proxy class is created whose name can be obtained by getClass().getName() method on the object.


Call by Value and Call by Reference in Java

There is only call by value in java, not call by reference. If we call a method passing a value, it is known as call by value. The changes being done in the called method, is not affected in the calling method.

In case of call by reference original value is changed if we made changes in the called method. If we pass object in place of any primitive value, original value will be changed. In this example we are passing object as a value.


strictfp keyword



The strictfp keyword ensures that you will get the same result on every platform if you perform operations in the floating-point variable. The precision may differ from platform to platform that is why java programming language have provided the strictfp keyword, so that you get same result on every platform. So, now you have better control over the floating-point arithmetic.


Legal code for strictfp keyword


The strictfp keyword can be applied on methods, classes and interfaces.

  1. strictfp class A{}//strictfp applied on class  
  1. strictfp interface M{}//strictfp applied on interface  
  1. class A{  
  2. void m(){}//strictfp applied on method  
  3. }  

Illegal code for strictfp keyword


The strictfp keyword can be applied on abstract methods, variables or constructors.

  1. class B{  
  2. strictfp abstract void m();//Illegal combination of modifiers  
  3. }  
  1. class B{  
  2. strictfp int data=10;//modifier strictfp not allowed here  
  3. }  
  1. class B{  
  2. strictfp B(){}//modifier strictfp not allowed here  
  3. }  

{ 1 comments... read them below or add one }

About This Site

Howdy! My name is Suersh Rohan and I am the developer and maintainer of this blog. It mainly consists of my thoughts and opinions on the technologies I learn,use and develop with.

Blog Archive

Powered by Blogger.

- Copyright © My Code Snapshots -Metrominimalist- Powered by Blogger - Designed by Suresh Rohan -