0:00
गैस हमारा पिछला वीडियो जो था उसको मैं concept clearing वीडियो बोल दूंगा कि concept clear उसने हमारा किया था कि abstract classes use क्यों करते हैं और interfaces क्यों use करते है�
0:12
अब मैं आप और आप लोगों को इस वीडियो में एक और reason बताऊंगा कि interfaces क्यों use करते हैं, आप में से कई लोग सोच रहे होगे कि मैं इस चीज़ पर इतना क्यों emphasize कर रहा हूँ, कि interfaces को use क्यों किया जाता है, इस चीज़ पर इतना जादा focus लेके मैं बात क्यों कर रहा हूँ, �
0:42
क्यों इस्तेमाल करते हैं, यहाँ पर आप लोग देखो notes में मैंने लिखा हुआ है क�
0:46
क्या multiple inheritance allowed है Java में या नहीं, अगर आप लोगो�
0:51
नहीं पता, तो कुछ programming languages में multiple inheritance allowed होती ह�
0:55
Java उनमेंसे एक नहीं है, लेकिन मैं आप लोगों को इस बारे में इसलिए बता रहा हू�
0:59
क्योंकि जो multiple inheritance है उसका मतलब है कि आप एक से जादा class इस्तेमा�
1:05
करके एक child class बना सकते हैं एक से जादा parent class क�
1:09
इस्तेमाल कर सकते हैं और एक child class बना सकते हैं मतलब इसका यह हुआ क�
1:13
आपके बास अगर 5 classes हैं तो वो 5 classes का इस्तेमाल करक�
1:17
आप एक नई child class बना सकते हैं Java ने कहा यह हम allow नहीं करते है�
1:22
और आपको पढ़ा चलेगा कि क्यों allow नहीं करते हैं अभी के लिए आप बस इतना समझोग�
1:26
Java multiple inheritance allow नहीं करती है तो यहाँ पर आप लोग देखो लिखा क्या ह�
1:31
लिखा है कि multiple inheritance face problems when there exist methods with same signature in both these superclasses
1:39
यानि कि अगर मान लो आपने दो superclasses का इस्तेमाल किया तो multiple inheritance जो है वो problem face करती ह�
1:45
अब ऐसा नहीं है कि उस problem को solve नहीं किया जा सकता बिल्कुल उस problem को solve किया जा सकता ह�
1:49
एक programming language के perspective से अगर देखें जैसे कि अगर हम C++ की बात करे�
1:54
तो C++ इस problem को solve करती है ठीक है लेकिन यहाँ प�
1:58
Java में multiple inheritance allowed ना होने का अगर मैं सिर्फ चंद शब्दों में reason द�
2:04
तो वो यह है कि Java has a better way to define things
2:08
Java के पास चीजों को अच्छी तरह से define करने का तरीका ह�
2:13
और मुझे यह बात बहुत अच्छी रखती है जावा की interfaces वाली और आप लोगों को भी अबी जब मैं समझा दूँग�
2:18
तो अच्छी definitely लगेगी multiple inheritance face करती है problem की अगर देखो आपकी जो दोनों parent classes मे�
2:24
same method है तो कौन सा वाला method इस्तेमाल होगा आपकी inherited class मे�
2:28
अब ये ambiguity resolve की जा सकती है और भी बहुत सारी problems ह�
2:32
जो कि java के creators ने सोचा कि यार हम अगर ये जो multiple inheritance वाली चीज़ ह�
2:38
ये हम inheritance से achieve ना करके interfaces से achieve करें तो अच्छा रहेग�
2:43
directly multiple inheritance allowed नहीं है java में लेकिन indirectly मैं कहूँगा कि multiple inheritance
2:48
अलाउड है जावा में, using interfaces, लेकिन अगर आपसे कोई सवाल पूछता है
2:52
क्या अलाउड है, multiple inheritance या नहीं, तो उसका जवाब नहीं, ठीक है
2:56
अब यहाँ पर देखो, due to such problems, जावा does not support multiple inheritance directly
3:02
but the similar concept can be achieved using interfaces, a class can implement multiple interfaces
3:07
आप एक से ज़ादा interfaces को implement कर सकते हो, extend class extends class 1 implements interface 1 interface 2 interface 3
3:27
यानि कि एक class को आपने extend भी कर लिया और कुछ interfaces को implement भी कर लिय�
3:32
ऐसा क्यों किया ये बताने के लिए मैं आप लोगों को एक diagram पर लेके जाता हू�
3:36
ठीक है और वो डाइग्राम से सब कुछ clear हो जाएगा सब कुछ ठीक है बस यह डाइग्राम देखना अभी के लिए और कुछ मत देखना यह डाइग्राम देखना ब�
3:44
और सब कुछ clear हो जाएगा मैं बताता हूँ क्यों clear हो जाएगा जब हम inheritance की बात करते हैं तब हम लोग एक class से दूसरी class को बनाते है�
3:52
अनिकि अगर हमारे बास एक cell phone class है तो उसको हम inherit करते एक smartphone class बना सकते है�
3:58
cell phone को आप कुछ ऐसा समझ लो कि वो एक cellular phone है और smartphone जो आपका जो आजकल सब लोग use करते है�
4:05
यार कैमरे वाला फोन जिसमें की GPS भी होता है, उसमें गाने भी सुन सकते हो
4:08
यूट्यूब भी देख सकते हो, और भी दस काम आप लोग कर सकते हो, उसको हम स्मार्ट फोन बोल रहे हैं
4:13
और सेल फोन किसे बोल रहे हैं, जो पहले जमाने में यूज किया जाता था जमाना तो यही था ब�
4:17
90s में यूज करते थे आपके पापा का पहला फोन या फिर maybe आपका पहला फोन भी हो सकता ह�
4:23
एक cell phone जिसमें की basic लाल बटन से फोन कटता ह�
4:27
हरे बटन से उठता है वो वाला फोन अब ये एक classic example है interfaces को समझाने के लिए और आपको ये example कई जगा मिलेगा ये example एकदम perfectly interfaces को use करने का reason है उस पर बहुत धंग से प्रकाश डालता ह�
4:42
देखो मैं अगर स्मार्टफोन को बोलूं कि स्मार्टफोन एक सैलूलर फोन ह�
4:48
तो ये बात सच है स्मार्टफोन एक सैलूलर फोन है तो ये आप स्मार्टफोन से बात कर सकते हो ठीक ह�
4:53
अगर मैं कहूं कि स्मार्टफोन एक कैमरा है तो वो बात सच नहीं होग�
4:58
स्मार्टफोन एक कैमरा नहीं है स्मार्टफोन को एक कैमरा के तौर प�
5:02
सिस्तिमाल जरूर किया जा सकता है इसलिए हम यहाँ पर सेलफोन से इनहारेट कर रहे है�
5:08
हम कहने की भाई जो स्मार्टफोन है उसमें सेलफोन का सब कुछ है औ�
5:11
cell phone की ही हम लोग कहेंगे कि ये next generation है पहले cell phone होते थे अब smart phone होते हैं ठीक ह�
5:18
लेकिन ये बात GPS camera और media player के लिए लागू नहीं होती ह�
5:22
हम ये कह सकते हैं कि smart phone एक cell phone ह�
5:25
जो की GPS camera और media player के तौर पर इस्तेमाल किया जा सकता ह�
5:31
तो interface हम कब use करते हैं जब कोई चीज किसी चीज के तौर पर इस्तेमाल की जा सकती ह�
5:37
जैसे कि smartphone एक cell phone है और smartphone एक GPS device के तौर पर इस्तेमाल की जा सकता ह�
5:43
एक camera के तौर पर इस्तेमाल की जा सकता है एक media player के तौर पर इस्तेमाल की जा सकता ह�
5:49
एक web browser के तोर पे भी इस्तेमाल किया जा सकता ह�
5:52
Java के पास इसलिए better ways of defining things हैं क्योंकि वो interfaces का इस्तेमाल करता ह�
5:58
और Java interfaces का इस्तेमाल इसलिए करता है क्योंकि Java के creators ने सोचा क�
6:03
हम इस तरह से चीज़ों को define करें तो better है हम अगर ये बोल दें कि smartphone जो ह�
6:08
वो एक cell phone भी है, एक GPS भी है, smartphone एक camera भी है smartphone एक camera नहीं है यार, camera तो camera होता ह�
6:14
DSLR camera थोड़ना है smartphone कोई camera भी आता है, ऐसा नहीं है कि पहले camera होते थ�
6:19
अब वो discontinue होके smartphone मन चुका है आज भी camera मिलते है�
6:24
क्या ऐसा है कि पहले media players हुआ करते थे लेकिन अब सिर्फ smartphone होते है�
6:28
media player नाम की कोई चीज नहीं है ऐसा नहीं है आते हैं आजकल iPods वगैरा media players आते हैं अभी भ�
6:33
interface implement cell phone evolve smartphone GPS camera media player java C languages multiple inheritance
7:04
यानि कि जितना smartphone camera है उतना ही smartphone cell phone भी है नहीं ये बात सही तो एक तरह से आप कह सकते हो inheritance के तौर पर ह�
7:13
but is not a better definition ठीक है ये चीजों को ढंग से नहीं समझात�
7:18
Java के creators ने सोचा कि बाई हम लोग सिर्फ एक class से inherit करेंग�
7:23
और बाकी हमें कुछ भी अगर use करना है, किसी और methods को use करना है
7:29
उनके interfaces बनाके हम उन interfaces को implement करेंगे, तो I hope आप लोग समझ गए होंगे
7:34
कि क्यों हम लोग interfaces को इस्तेमाल करते हैं, smartphone एक cell phone है
7:39
बिल्कुल एक पुक्ता cell phone है, बट एक GPS device के तौर पर इस्तेमाल किया जा सकता ह�
7:44
camera के तौर पर इस्तेमाल किया जा सकता है media player के तौर पर इस्तेमाल किया जा सकता ह�
7:48
और उस translated के साथ साथ वो और भी कई चीज़ें हैं जिनके तौर पर इस्तेमाल किया जा सकता ह�
7:53
हम जितने मन चाहें interfaces implement कर सकते हैं तो जावा ने क्यों interfaces का route लिया
7:59
क्यों interfaces को बनाने का सोचा, क्योंकि ये चीजों को better define करता है
8:04
तो यही reason था कि जावा ने कहा कि यार, हम multiple inheritance को disallow करेंगे
8:10
और उसी के साथ साथ interfaces के concept को introduce करेंगे, तो यहाँ पर अब हम कुछ notes देख लेते हैं
8:15
आपके दिमाग में लिखे हुए हैं चीजों को समराइज करने के लिए आप लोगों के दिमाग में बिठाने के लिए और आपने अगर ये बात आज सुन लिये तो maybe छे महीने बाद अगर आप बूल जाएं तो आपके दिमाग में ये सारी बातें वापस रिकॉल करने के लिए �
8:45
और बाकी अगर हमें कोई methods implement करने जैसे की camera के methods, media player के methods, वो सारे हम interfaces की साहिता से करेंगे
8:53
तो interfaces in java is a bit like the class, but with a significant difference, वो difference क्या है, बताता हूँ
8:59
an interface can only have method signatures, fields and default methods, अब जो interface के अंदर आप fields डालोगे, वो constant होंगी
9:07
और इसका demonstration मैं आप लोगों को दिखा देता हूँ यह वैसे मैंने आप लोगों को पिछले वीडियो में भी बताया थ�
9:12
बट यहाँ पर आप लोग देखो जब हम इसकी जो interfaces की properties है�
9:16
उनको हम update करने की कोशिश कर रहे हैं तो यह यहाँ पर बोल रहा है कि यह variable final है आप इसको update नहीं कर सकत�
9:22
ठीक है so I hope कि यह चीज आप लोगो clear हो गई है अगला point जो मैंने लिखा है वो यह है कि the class implementing an interface
9:30
तो यहाँ पर थोड़ा सा typo आ गया है मैं इस typo को fix कर दूँग�
9:33
और typo यह है कि the class implementing an interface needs to define the methods and not the fields
9:38
इस बात का मतलब क्या यह मैं आप लोगों को बताता हूँ जैसे मान लो मेरे पास यह एक interface ह�
9:43
horn bicycle और मैंने यहाँ पर मान लो लिख दिया public int x is equal to 45
9:49
मान लो लिखा हुआ है तो मुझे इस 45 को वापस स�
9:53
class override public int x is equal to 5 A1 cycle
10:07
यहां पर क्या होगा मैं इसको एक्स को प्रिंट करने की कोशिश कर रहा हूं और यहां पर देखो फाइव यहां प�
10:13
आ गया यानी कि आप अपनी क्लासेस में इनको वर्राइट कर सकते हैं लेकिन जरूरी नहीं है कि आप इनको वर्राइ�
10:20
प्रॉपर्टीज को अगर मैं यहाँ पर public int x5 नहीं लिखता मैं in fact इसको comment out कर देता हूँ कुछ इस तरह स�
10:27
तो यहाँ पर आप लोगों को 5 की जगह यह 45 print करके देत�
10:31
जैसे कि आप देख सकते हो ठीक है तो अगर आप लोगों नहीं कुछ properties यहाँ पर डाल रखी है�
10:36
अपने interfaces के अंदर तो जरूरी नहीं है कि आप इनको overwrite करे�
10:40
ठीक है लेकिन ये जो method से इनको आपको implement करना जरूर�
10:44
है ठीक है और ये notes में थोड़ा सा typo है point number 3 में इसक�
10:48
हम लोग ठीक करेंगे मैं इसको ठीक करके डालूंगा और by any chance मैं भूल जाता हू�
10:52
उसको ठीक करके डालना, तो the class implementing and interface needs to define the methods, not fields, ठीक है, but not the fields, not necessarily the fields, इस point को थोड़ा सा मुझे clearly लिखना चाहिए था, मैं फिर से point repeat करता हूँ, the class implementing and interface needs to define the methods, necessarily not the fields, ठीक है, fields को आप ज़रूरी नहीं है कि define करें, but methods को आपको define करना ज़रूरी है
11:18
point number 3 में मैंने पता नहीं, मैं क्या सोच रहा था जब मैं इसको लिख रहा था, थोड़ा सा टाइप हो गया है, point number 4 देखते हैं, you can create a reference of interfaces but not the object, आप interfaces का object create नहीं कर सकते, आप interfaces का reference create कर सकते हो, और ये बात clear होगी, यहाँ पर जब मैं आप लोगों को polymorphism using interfaces बताओंगा, और इ�
11:48
आप लोगों क्लेल 안 बताऊंगा ठीक है तो यहां पर आप लोग देखो अगला पॉइंट इंटरफेस मेथड्स आफ पब्लिक बाय डिफॉल्ड का मतलब है कि आप इंटरफेस के मेथड में या तो पब्लिक डालें या ना डालें या आपको बोल देगा कि भाई यह जो मॉ�
12:18
interfaces आप लोगों को समझ में आ गया अच्छी तरह से बट और क्लियर हो जाएगा जब आने वाले वीडियोस को देखोगे और एक्सरसाइ�
12:25
को सॉल्व करोगे इंटरफेस क्लास की तरह ही है बट कुछ डिफरेंस है जो कि हमने इस वीडियो में देखा अगर आप लोगो�
12:31
अभी तक ये playlist access नहीं करी है तो इसको ज़रूर access करना और उसी के साथ साथ अगर आप लोगों ने यहाँ पर basic concept उप के नहीं देखे हैं जो object-oriented programming के basic concept में बताया है तो वो आप लोग ज़रूर देखना शुरू में कि बहुत सारे लोग जो हैं इस playlist को बीच से access करके देखने start क�
13:01
प्रस्तुत्र प्रस्तुत्�