Object Type Casting in Java in Hindi

Last Updated on February 26, 2023 by RAJENDRAPRASAD

Object Type Casting in Java in Hindi – Hello दोस्तों rajhindime.in में आपका स्वागत है |

दोस्तों, पिछले post Type Casting in java in Hindi में आपने Type Casting क्या है, उसके कितने types हैं ? उसे कैसे use करते हैं इत्यादि के बारे में विस्तार से जाना |

Basically, अब तक हमनें primitive type casting के बारे में ही जाना है |

आज के इस post में आप Object Type Casting के बारे में विस्तार से जानेंगे |

Type Casting in java:

जब java में एक data type को किसी दूसरे data type में अथवा एक object को दूसरे object में convert किया जाता है, तब उसे Type casting अथवा Type conversion कहते हैं |

NOTE: Object type casting के लिए relation/inheritance का concept होना ही चाहिए | बिना inheritance hierarchy के object type casting possible नहीं है |

Types of Object type casting in Java:

Object types casting के मुख्यतः दो प्रकार होते हैं :

1. Upcasting

2. Downcasting

1. Upcasting in Java:

जब किसी sub class object को उसके super class object में cast किया जाता है तो उसे upcasting कहते हैं |

ध्यान दो, super class object कुछ भी हो सकता है जैसे, parent class का object, grand parent class का object या फिर grand grand parent class का object | कहने का मतलब, super class object, inheritance tree/hierarchy में ऊपर की तरफ कोई भी हो सकता है |

Program 1 :

class Mobile {

	void call() {
		System.out.println("Calling");
	}
}

class Samsung extends Mobile {
	void camera() {
		System.out.println("Using Samsung Camera");
	}
}

public class ObjectTypeCastingDemo1 {

	public static void main(String[] args) {
		Samsung s = new Samsung();
		Mobile m = (Mobile) s;
		System.out.println("Upcasting done");
	}
}

OutPut:

Upcasting done

Explanation:

ऊपर के program 1 में, class Mobile एक parent class है और class Samsung एक Child class है |

Samsung s = new Samsung();

का use करके Samsung object को create किया गया और उसे reference variable s में store किया गया |

उसके बाद,

Mobile m = (Mobile) s;

का use करके s को Mobile object में convert किया और reference variable m में store कर दिया |

इस तरह हमनें, child class Samsung के object को, उसके parent class Mobile के object में convert कर दिया |

अब program 1 में,

Mobile m = (Mobile) s; को Mobile m = s; से replace करो, आप देखोगे कि हमें same output मिलेगा |

अब फिर से,

Mobile m = s; को Mobile m = new Samsung; से replace करो और

Samsungs = newSamsung();  को comment/delete कर दो |

आप देखोगे कि अब भी हमें same वही output मिल रहा है |

ऐसा इसलिए हुआ क्योकि, Upcasting Compiler द्वारा automatically/implicitly कर दिया जाता है, हमें उसे अलग से अथवा explicitly करने की कोई जरुरत नहीं होती |

इस तरह,

Upcasting के लिए Mobile m = (Mobile) s

लिखने की बजाय

Mobile m = new Samsung; को लिख सकते हैं |

NOTE: Parent class अपने किसी भी child class के object को store कर सकता है |

जैसे,

Mobile m = new Samsung;

Mobile m = new Nokia;

Mobile m = new Oppo;

Mobile m = new OnePlus;

Program 2:

class Mobile {

	void call() {
		System.out.println("Calling");
	}
}

class Samsung extends Mobile {
	void camera() {
		System.out.println("Using Samsung Camera");
	}
}

public class ObjectTypeCastingDemo1 {

	public static void main(String[] args) {
		Mobile m = new Samsung();
		m.call();
//		m.camera();  //give Compile time error
	}
}

OutPut:

Calling

Explanation :

ऊपर के program 2 में, child class Samsung के object को, parent class Mobile के reference variable में store किया है |

फिर m.call() का use करके parent class के method को call किया है |

अब ऊपर के code में m.camera(); को uncomment करके फिर से run करो |

आपको compile time error मिलेगा |

OutPut:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The method camera() is undefined for the type Mobile

	at com.typecasting.ObjectTypeCastingDemo1.main(ObjectTypeCastingDemo1.java:19)

Explanation:

यहाँ parent class Mobile का reference variable m, child class Samsung के object को store करता है, फिर भी child class के specific method को call करने पर Compile time error मिला |

NOTE:

जब भी हम upcasting करते हैं तब हम, केवल parent class के methods को ही call कर सकते हैं, child class के किसी भी specific method को call नहीं कर सकते |

इस तरह Upcasting द्वारा हम child class instance के पास available methods को ristrict/limit कर देते हैं (normally, child class instance के पास उसके खुद के साथ ही साथ उसके Parent class के methods भी available होते हैं )

अब सवाल यह है कि child specific methods को call कैसे करें ?

इसका Solution है Downcasting |

2. Downcasting in Java:

जब किसी Parent class object को उसके child class object में cast किया जाता है तो उसे Downcasting कहते हैं |

ध्यान दो, यहाँ भी sub class object कुछ भी हो सकता है जैसे, child class का object, grand child class का object या फिर grand grand child class का object | कहने का मतलब, sub class object, inheritance tree/hierarchy में नीचे की तरफ कोई भी हो सकता है |

Program 3:

class Mobile {

	void call() {
		System.out.println("Calling");
	}
}

class Samsung extends Mobile {

	void camera() {
		System.out.println("Using Samsung Camera");
	}
}

public class ObjectTypeCastingDemo1 {

	public static void main(String[] args) {
		Mobile m = new Samsung();
		m.call();
//		m.camera();			//give compile time error
		((Samsung) m).camera();			//Downcasting -- Mobile into Samsung
	}
}

OutPut:

Calling
Using Samsung Camera

Explanation:

ऊपर program 3 में, reference variable m (जो कि Mobile Type का है ) को (Samsung)m का use करके उसे Samsung type में cast कर दिया है |

फिर उसके बाद ((Samsung) m).camera(); का use करके child class के method camera() को call कर लिया |

इस तरह Upcasting के restriction होने के बावजूद भी हमने Downcasting का use करके Child Class के specific method को भी call कर लिया |

Interface and object type Casting in Java:

जिस तरह Parent class अपने किसी भी child class के object को store कर सकता है |ठीक उसी तरह, Interface भी अपने किसी भी implementation class के object को store कर सकता है |

Program 4:

interface Vehicle {
	void numOfTire();
}

class Car implements Vehicle {

	@Override
	public void numOfTire() {
		System.out.println("Car has 4 tires");
	}
}

class AutoRickshaw implements Vehicle {

	@Override
	public void numOfTire() {
		System.out.println("AutoRickshaw has 3 tires");
	}
}

class Bike implements Vehicle {

	@Override
	public void numOfTire() {
		System.out.println("Bike has 2 tires");
	}
}

public class InterfaceObjectTypeCasting {

	public static void main(String[] args) {
		Vehicle v1 = new Car();
		v1.numOfTire();
		Vehicle v2 = new AutoRickshaw();
		v2.numOfTire();
		Vehicle v3 = new Bike();
		v3.numOfTire();
	}
}

OutPut:

Car has 4 tires
AutoRickshaw has 3 tires
Bike has 2 tires

Explanation :

Upar program 4 में, Vehicle एक Interface है और class Car, AutoRickshaw और Bike ने इसे implements करके इसके method numOfTire() को override किया है |

v1, v2 और v3 Interface Vehicle ke reference variables हैं जो उसके implementation class के object को store करता है |

जब वह Car object को store करता है तब Car का numOfTire() method call होता है और जब AutoRichshaw() object को store करता है तब AutoRichshaw का numOfTire()  method call होता है, ठीक उसी तरह Bike का numOfTire() method भी call होता है |

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

इस post में आपने Object Type Casting क्या है, उसके कितने types हैं ? उसे कैसे और कब use करते हैं, Interface और Object Type Casting  इत्यादि के बारे में जाना |

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

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

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

Leave a Comment