Abstraction in Java in Hindi

Last Updated on August 3, 2022 by RAJENDRAPRASAD

Abstraction in java in Hindi – Hello दोस्तों rajhindime.in में आपका स्वागत है |

दोस्तों, पिछले कुछ posts में आपने OOPs concept के Inheritance, Polymorphism तथा  Encapsulation के बारे में विस्तार से जाना |

आज के इस पोस्ट Abstraction in Java in Hindi में आप Abstraction के बारे में विस्तार से जानेंगे |

इससे पहले हम Abstraction को जाने, आइए कुछ example देखते हैं |

Email:

दोस्तों, आपने email का use तो किया ही होगा |

Email भेजने के लिए आप क्या करते हो ?

हमें  जो message भेजना है, उसे type करते हैं, जिसको भेजना है उसका email address डालते हैं और send button पर click कर देते हैं और वह email सामने वाले receiver को मिल जाता है |

क्या आपने सोचा है, यह email काम कैसे करता है ?

नहीं, हम यह सब नहीं सोचते, क्योकि सिर्फ user होने के नाते हमें यह सब जानने की जरुरत ही नहीं पड़ती |

साथ ही साथ जिस भी programmer ने यह email service का code लिखा होगा, उसने भी इसके कार्यप्रणाली (working) को बताना जरुरी नहीं समझा | क्योकि, programmer को भी यही लगता है कि एक end user को यह सब जानने की जरुरत ही नहीं, end user को तो सिर्फ उसके काम से मतलब होता है, न की उसका काम कैसे होता है |

Phone Call:

किसी को call करने के लिए आप क्या करते हो?

जिसे call करना है, उसका mobile number dial किया और call button को press/click किया | बस, अब आप सामने वाले से connect हो गए, अपनी बात कहने और सुनने के लिए |

पर आपने सोचा कि यह सब हुआ कैसे ?

नहीं, क्योकि हमें जानने की जरुरत ही नहीं |

Online Game Download karna:

किसी भी game को download/install करने के लिए आप क्या करते हो ?

Mobile में Play store open किया, जो game download करना है, उसका name लिखकर search button पर click किया और जैसे ही, search result आ गया, उसमें से आपने अपने game पर click करके download/ install कर लिया |

क्या आपने जाना कि search button कैसे कार्य करता है, कैसे वह लाखों – करोड़ो applications में से केवल आपके द्वारा type किए गए game को ही search करता है ?

नहीं, क्योकि हमें जानने की जरुरत ही नहीं |

आइए, अब एक daily life example लेते हैं |

TV Remote:

इसका use हम/आप channel बदलने, volume कम – ज्यादा करने, TV को बंद – चालू करने के लिए करते हैं परन्तु, एक end user होने के नाते, इसके working को नहीं जानते और न ही TV remote बनाने वाले ने इसे बताना जरुरी समझा |

ऊपर के सभी example में, आपने देखा कि, एक programmer/manufacturer (निर्माता) end user होने के नाते, हमें केवल product के function के बारे में ही बताता है कि, कोई product क्या – क्या करता है, न की वह उसे कैसे करता है |

कहने का मतलब है कि programmer हमें function/method के बारे में बताता है और उस method के implementation को हमसे छुपा के रखता है, क्योकि उसे लगता है कि end user होने के नाते हमें इसकी कोई जरुरत नहीं |

इसे ही, programming के language में abstraction कहते हैं |

Abstraction in Java

Abstraction यह एक ऐसी प्रकिया (process) है जिसमें user को, किसी product की कार्यप्रणाली (कैसे काम करता है) को hide करके, केवल उसके functions के बारे में ही बताया जाता है |

सरल शब्दों में कहें तो, user को सिर्फ product क्या- क्या काम करता है इतना ही, पता होता है, product के internal working के बारे में कोई जानकारी नहीं होती |

How to Achieve Abstraction in Java? Abstraction कैसे achieve करें ?

Java में Abstraction achieve करने के दो तरीके हैं |

1. Abstract class का use करके

2. Interface का use करके

Interface हमें 100 % abstraction प्रदान करता हैं अर्थात Interface का use करके हम सभी method implementation को abstract कर सकते हैं | सरल शब्दों में कहें तो , Interface के अंदर सारे method abstract होते हैं अर्थात किसी भी method की implementation body नहीं होती |

Abstract class का use करके हम partial abstraction achieve करते हैं अर्थात अपनी requirement के आधार पर हम 0 से 100 % तक abstraction achieve कर सकते हैं | Abstract class में कुछ method की implementation body हो सकती है और कुछ की नहीं |

इस post में हम Abstract class के बारे में विस्तार से जानेंगे और Interface को हम आनेवाले post में जानेंगे |

Abstract Class in Java

1. इस class को abstract keyword का use करके declare किया जाता है |

2. Abstract class के अंदर regular method तथा abstract method दोनों हो सकते हैं | regular method मतलब जिसकी method की implementation body हो तथा abstract method मतलब जिस method की implementation body न हो |

3. यह जरुरी नहीं कि abstract class के अंदर abstract method हो ही |परन्तु, अगर किसी भी class में कम से कम एक abstract method हो, तो उस स्थिति में उस class को abstract declare करना जरुरी है अन्यथा compile time error प्राप्त होगा |

4. Abstract class में हमेशा default constructor होता है और हम parameterized constructor भी define कर सकते हैं | Constructor के बारे में विस्तार से जानने के लिए Constructor in Java पर click करें |

5. इसके अंदर final तथा static method भी हो सकते हैं |

6. Abstract class का object नहीं create किया जा सकता | परन्तु, इसके sub class का object create कर सकते हैं |

Class के बारे में अधिक जानने के लिए Class in Java पर click करें |

Abstract method in Java

1. वह method जिसकी कोई implementation body न हो, उसे Abstract method कहते हैं |

2. इस method को abstract keyword का use करके declare किया जाता है |

3. चूँकि, abstract method की body नहीं होती, इसमें { } का use नहीं होता

4. Abstract method को semicolon ; द्वारा end करना आवश्यक है

5. Abstract method को use करने के लिए इसके abstract class को inherit अर्थात extends करके उस abstract method को override करना जरुरी है |

Method के बारे में अधिक जानने के लिए Method in Java पर click करें |

Program 1:

abstract class Animal {

	abstract void breath();

	void eat() {
		System.out.println("I am eating as Animal...");
	}
}

class Dog extends Animal {

	@Override
	void breath() {
		System.out.println("Breathing as Dog...");

	}
}

class AbstractClassDemo {
	public static void main(String args[]) {
		Animal a = new Dog();
		a.breath();
	}
}

OutPut:

Breathing as Dog...

Explanation:

Program 1 में, Animal एक abstract class है, जिसमें eat एक regular method है तथा breath एक abstract method है, जिसकी कोई method body { } नहीं है और इसे semicolon ; से close किया गया है |

Abstract class Animal को Dog class द्वारा inherit किया गया है |

Subclass Dog ने, उसके parent abstract class Animal के abstract method breath() को override करके उसकी implementation body { } define की है |

Abstract class का object क्यों नहीं create कर सकते ?

Program 2:

abstract class Animal {

	abstract void breath();

	void eat() {
		System.out.println("I am eating as Animal...");
	}
}

class AbstractClassDemo {
	public static void main(String args[]) {
		Animal a = new Animal();
		a.breath();
	}
}

OutPut:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot instantiate the type Animal

	at com.javapractice.AbstractClassDemo.main(AbstractClassDemo.java:12)

Explanation:

Program 2 में जब हमने,

Animal a = new Animal();

लिखा तो हमें compile time error मिला, ऐसा क्यों ?

Reason:

1. abstract class यह एक incomplete class होता है |

2. मान लीजिए यदि, object को create करना possible होता तो, अगर कोई उस object का use करके उसके abstract method को call करता तो execution के लिए कुछ होता ही नहीं, क्योकि उस abstract method की तो कोई implementation body है ही नहीं |

हम भले ही, abstract class का object नहीं create कर सकते परन्तु, हम उसे inherit करके उसके sub class का object create करके उस abstract class के methods को जरूर call कर सकते हैं |

आइए इसे नीचे दिए गए program 3 द्वारा समझें |

Abstract class और Inheritance

Abstract class को हम एक normal Class की तरह ही extend कर सकते हैं परन्तु, sub class को उसके abstract parent class के abstract method को define करना जरुरी होता हैं |

NOTE: यदि, subclass उसके parent abstract class के किसी भी abstract method को override करके उसे implementation body नहीं देता उस स्थिति में, उसे उस method के साथ ही साथ उस subclass को भी abstract declare करना होगा, अन्यथा compile time error मिलेगा |

Program 3:

abstract class Animal {

	abstract void breath();

	void eat() {
		System.out.println("I am eating as Animal...");
	}
}

class Dog extends Animal {

	@Override
	void breath() {
		System.out.println("Breathing as Dog...");

	}
}

class AbstractClassDemo {
	public static void main(String args[]) {
		Dog a = new Dog();
		a.breath();
		a.eat();
	}
}

OutPut:

Breathing as Dog...
I am eating as Animal...

Explanation:

Program 3 में,

Abstract class Animal को, class Dog द्वारा inherit किया गया हैं |

Subclass Dog का object create किया हैं, जिसका use करके हमने दोनों method breath() तथा eat() को call किया है |

Advantage of abstraction in Java

1. यह code duplication को avoid तथा उसकी reusability को बढ़ाता है

2. यह security तथा confidentiality(गोपनीयता) को बढ़ाता है क्योकि, user को केवल जरूरी functionality के बारे में ही बताया जाता है |

3. इसके द्वारा code को enhance करना easy हो जाता है क्योकि, जरुरत पड़ने पर हम end-user को बताए बिना ही internal coding को change कर सकते है |

4. Abstract class, loosely-coupled class create करने में help करता है |

Conclusion – आज आपने क्या सीखा

इस post में आपने Abstraction क्या होता है , इसे achieve कैसे करते हैं, abstract class और abstract method क्या हैं, abstraction के advantages क्या हैं, आदि के बारे में विस्तार से जाना |

आशा है कि, आपको मेरा यह Blog Abstraction in Java in hindi, जरूर पसंद आया होगा |

अगर आप इस post से related कोई सवाल पूँछना चाहते हैं अथवा कोई सुझाव देना चाहते हैं तो comment करके जरूर बताएं, मैं उसका reply जरूर दूँगा |

इस post को अपना कीमती समय देने के लिए बहुत बहुत धन्यवाद् | फिर मिलेंगें |

2 thoughts on “Abstraction in Java in Hindi”

  1. sir interface m constructor nhi hota to ham uske ander variable ko call kese kr lete hai bcz constructor s hi object bnta hai jb interfce m constructor hota hi nhi to uske variable ko kese call kr skte hai ham

    Reply
    • Hi Avinash,

      1. Interface के variable को call करने के लिए, constructor की कोई जरुरत नहीं पड़ती, उसे हम direct ही उसके implementation class में call कर सकते हैं |
      Example :

      interface Math {
      public static final double PI = 3.14;

      }

      public class Area implements Math {
      double radious = 2;
      double area = PI * radious * radious; // calling PI variable from Math interface

      void getArea() {
      System.out.println(“Area is : ” + area);
      }

      public static void main(String[] args) {
      Area a = new Area();
      a.getArea();
      }
      }

      OutPut:
      Area is : 12.56

      2. constructor का main काम, instant variable को initialize(value देना) करना है, चूँकि interface में सारे variable by default public, static और final होते हैं, इसके कारण हम जब भी interface में कोई भी variable define/declare करते हैं तो, उसे उसी समय कोई न कोई value जरूर देना होता है | इस तरह interface में constructor की कोई जरुरत ही नहीं है, क्योकि variable की value तो हमने दे दी है, उसे declare करने के time ही |

      3. आपने सही कहा कि, object को create करने के लिए constructor की जरुरत होती है, परन्तु हम जब भी object create करते हैं तब उसके लिए कुछ memory allocate की जाती है, जो कि size में fix होती है |
      चूँकि interface यह 100% abstract होता है, इसमें केवल method को declare करते हैं, न कि उसकी implementation body को | इसलिए इसके object के लिए कितना memory allocate करना है यह पूरी तरह पता ही नहीं चलता | इसलिए interface का object create करना possible ही नहीं है |

      आशा है कि मैं आपके doubt को दूर करने में सफल रहा |

      Reply

Leave a Comment