Report this

What is the reason for this report?

OOPS Concepts in Java - OOPS Concepts Example

Published on August 3, 2022
OOPS Concepts in Java - OOPS Concepts Example

Object-Oriented Programming Concepts are very important for programming. Without having an idea about OOPS concepts, you will not be able to design systems in the object-oriented programming model.

What is Object-Oriented Programming Model?

The object-oriented programming model revolves around the concept of Objects. What is an Object? An object is an instance of a Class. It contains properties and functions. They are like real-world objects. For example, your car, house, laptop, etc. are all objects. They have some specific properties and methods to perform some action. What is a Class? The Class defines the blueprint of Objects. They define the properties and functionalities of the objects. For example, Laptop is a class and your laptop is an instance of it.

OOPS Concepts

oops concepts, object oriented programming concepts, oops concepts in java Core OOPS concepts are:

  1. Abstraction
  2. Encapsulation
  3. Polymorphism
  4. Inheritance
  5. Association
  6. Aggregation
  7. Composition

Let’s look into these object-oriented programming concepts one by one. We will use Java programming language for code examples so that you know how to implement OOPS concepts in Java.

1. Abstraction

Abstraction is the concept of hiding the internal details and describing things in simple terms. For example, a method that adds two integers. The internal processing of the method is hidden from the outer world. There are many ways to achieve abstraction in object-oriented programmings, such as encapsulation and inheritance. A Java program is also a great example of abstraction. Here java takes care of converting simple statements to machine language and hides the inner implementation details from the outer world.

Further Reading: What is Abstraction in OOPS?

2. Encapsulation

Encapsulation is the technique used to implement abstraction in object-oriented programming. Encapsulation is used for access restriction to class members and methods. Access modifier keywords are used for encapsulation in object oriented programming. For example, encapsulation in java is achieved using private, protected and public keywords.

3. Polymorphism

Polymorphism is the concept where an object behaves differently in different situations. There are two types of polymorphism - compile time polymorphism and runtime polymorphism. Compile-time polymorphism is achieved by method overloading. For example, we can have a class as below.

public class Circle {

	public void draw(){
		System.out.println("Drwaing circle with default color Black and diameter 1 cm.");
	}
	
	public void draw(int diameter){
		System.out.println("Drwaing circle with default color Black and diameter"+diameter+" cm.");
	}
	
	public void draw(int diameter, String color){
		System.out.println("Drwaing circle with color"+color+" and diameter"+diameter+" cm.");
	}
}

Here we have multiple draw methods but they have different behavior. This is a case of method overloading because all the methods name is same and arguments are different. Here compiler will be able to identify the method to invoke at compile-time, hence it’s called compile-time polymorphism. Runtime polymorphism is implemented when we have an “IS-A” relationship between objects. This is also called a method overriding because the subclass has to override the superclass method for runtime polymorphism. If we are working in terms of the superclass, the actual implementation class is decided at runtime. The compiler is not able to decide which class method will be invoked. This decision is done at runtime, hence the name as runtime polymorphism or dynamic method dispatch.

package com.journaldev.test;

public interface Shape {

	public void draw();
}
package com.journaldev.test;

public class Circle implements Shape{

	@Override
	public void draw(){
		System.out.println("Drwaing circle");
	}

}
package com.journaldev.test;

public class Square implements Shape {

	@Override
	public void draw() {
		System.out.println("Drawing Square");
	}

}

Shape is the superclass and there are two subclasses Circle and Square. Below is an example of runtime polymorphism.

Shape sh = new Circle();
sh.draw();

Shape sh1 = getShape(); //some third party logic to determine shape
sh1.draw();

In the above examples, java compiler doesn’t know the actual implementation class of Shape that will be used at runtime, hence runtime polymorphism.

4. Inheritance

Inheritance is the object-oriented programming concept where an object is based on another object. Inheritance is the mechanism of code reuse. The object that is getting inherited is called the superclass and the object that inherits the superclass is called a subclass. We use extends keyword in java to implement inheritance. Below is a simple example of inheritance in java.

package com.journaldev.java.examples1;

class SuperClassA {

	public void foo(){
		System.out.println("SuperClassA");
	}
	
}

class SubClassB extends SuperClassA{
		
	public void bar(){
		System.out.println("SubClassB");
	}
	
}

public class Test {
	public static void main(String args[]){
		SubClassB a = new SubClassB();
		
		a.foo();
		a.bar();
	}
}

5. Association

Association is the OOPS concept to define the relationship between objects. The association defines the multiplicity between objects. For example Teacher and Student objects. There is a one-to-many relationship between a teacher and students. Similarly, a student can have a one-to-many relationship with teacher objects. However, both student and teacher objects are independent of each other.

Aggregation

Aggregation is a special type of association. In aggregation, objects have their own life cycle but there is ownership. Whenever we have “HAS-A” relationship between objects and ownership then it’s a case of aggregation.

6. Composition

The composition is a special case of aggregation. The composition is a more restrictive form of aggregation. When the contained object in “HAS-A” relationship can’t exist on its own, then it’s a case of composition. For example, House has-a Room. Here the room can’t exist without the house. Composition is said to be better than inheritance, read more at Composition vs Inheritance.

Further Reading: Composition in Java

That’s all for a quick round-up on OOPS concepts.

You can go through more Java example programs from our GitHub Repository.

References: https://docs.oracle.com/javase/tutorial/java/concepts/

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the author

Pankaj Kumar
Pankaj Kumar
Author
See author profile

Java and Python Developer for 20+ years, Open Source Enthusiast, Founder of https://www.askpython.com/, https://www.linuxfordevices.com/, and JournalDev.com (acquired by DigitalOcean). Passionate about writing technical articles and sharing knowledge with others. Love Java, Python, Unix and related technologies. Follow my X @PankajWebDev

Category:
Tags:
While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

Still looking for an answer?

Was this helpful?

After read all of your articles about design pattern and OOP, i can say that you know how to choose the right word to explain thing. Very clear, precise and easy to understand and follow. Thumbs up.

- reemza

Nice. Good for refreshment. Thanks Ramesha

- Ramesh

Really excellent with simple words

- vivek

Really super . it is very neat and clean.

- ravi

Simply Super…

- Navin Kumar A S

clear and clean… thank u so much :-)

- sai ranga talari

excellent, it is very neat and clean.

- Thrimurthulu

Good and simple for understanding the meaning of containt…thank for your kind

- Saurabh kaushal

simply superbbb

- Ramakrishna Reddy

nice bro

- Ganesh

Helpful and very meaningful. Thanks dear friend Naveen

- Naveen Sneha

The topics are very clear…

- sahaana

SUPER AND CLEAR

- RAJENDRAPRASAD

well define

- krishna kanth

Thanks…superb

- Khushi

excellent article! You have shared each and every point of OOPs concept very well and precise, its easy to understand every term you have explained here. Fine and clearly explained list of OOPs concept in java. Thanks a lot for sharing!

- pranit

Really i am happy with this article now i cleared oops Concept. i ll refer this site who has going to learn Java or Oops Concept this ll help a lot. I ll special thank to this article owner Thank you,

- Madheshwaran

helpful

- Arun SIngh

after reading your articles about design pattern and OOPS It’s Very clear and helpful please provide such type articles on DFD SRS ER diagram use case diagram and so on…

- indrajit kumar

many ways to achieve abstraction in object oriented programming, such as encapsulation and inheritance. this is corrects by inheritance are interface

- vishnuvarthan

I like it

- Shaheen

nice short but sweet explanations with real time examples helping to visualize concepts

- Omkar Kulkarni

Nice ariticle,realy its cativative. Each sentences are simple and .understandable… I used this article for my assignnent purposes for the reference and realy it is awosome. Thumps up :)

- Hashim.TA

Can you please explain about Coupling and Cohession?

- Anusha

Thank you , Nice article.

- Reshma Ullas

Nice explanation with great examples. Loved it

- Prateek

Nice Arcticle, Well explained with examples

- Madhu

Thanks. very well explained,

- Sonam Sehgal

Thanks a bunch because it was explained very simply and very useful

- Noorulhaq sharifi

I found this article useful & informative. The whole concept of OOPS in Java was explained beautifully with the help of such good examples so that it’s very easy to understand for me. Nice sharing.

- online java training

Nice Article Bro , It could help me In my Interview <3

- Shahzad Khan

Thanks for the simple and wonderful explanations. Can you please add examples for association, aggregation and compositions as well? That would be very helpful.

- priya karthi

Very simple and nice

- Sudeep

excellent,super

- Senuja Ranhira

Thank you for sharing such an informative and useful post with us.

- preeti

nice very very nice i love it… ha ha ha ha

- Boss shivaji the boss

Hi Pankaj, thank you very much for so much information about Java and all in the same place. It was great idea doing that. I have read lots of your articles. Allow me to point something that doesn’t sound right, when you say: “Shape is the superclass and there are two subclasses Circle and Square.” shouldn’t it be: “Shape is an interface and Circle and Square are implementations of it, which give us an Interface polymorphism.” ?

- Bruno

Super… Thanks Pankaj

- Ashok Burania

“Shape sh = new Circle(); sh.draw();” how to understand that it only can be done at runtime? i think as long as the complier is strong enough, the complier could also know which to call at complie time. thank you

- Roy Wu

How to write this programm in java Class Teacher Name Department gender salary grade with paramatarised constructor

- Pirzada

Creative CommonsThis work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 4.0 International License.
Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.