0:02
Guys आज के इस video में हम लोग देखने वाले हैं default methods को और
0:06
यहां पर जल्दी से मैं सबसे पहले जो हमारी notes हैं उनको खोल लेता
0:09
हूं और हम लोग default methods देखेंगे और उससे भी पहले यहां
0:13
पर मैं क्या करना चाहूंगा आप लोगों को एक interfaces का जो real
0:17
world example दिया था इसको जल्दी से plot करना चाहूंगा हमारे Java
0:21
का ये video number fifty seven है। तो यहां पर मैं जल्दी
0:25
से बनाऊंगा एक file CW underscore fifty seven underscore default methods और
0:32
default methods से पहले हम लोग यहां पर कुछ interfaces बनाएंगे और
0:36
वही interfaces बनाएंगे जो कि हम लोगों ने देखे थे यानी कि हम लोग interfaces
0:40
बनाएंगे अपने smartphone वाले। तो सबसे पहले एक interface तो मैं बनाना
0:43
चाहता हूं अपना camera ठीक है। क्योंकि जो smartphone है वो camera
0:49
की तरह act कर सकता है और camera में कौन-कौन से methods होंगे, मैं
0:52
यहां पर लिख दूंगा एक method take snap ठीक है? और take
0:57
snap क्या करेगा simply बोलेगा taking snap ये एक interface है इसलिए
1:04
मैं इसमें body नहीं बना सकता, my bad मैं class बनाऊंगा एक
1:08
यहां पर phone। In fact मैं यहां पर एक class बनाऊंगा cell
1:12
phone और वो implement करेगी इस interface को तब हम लोग यहां
1:16
पर take snap method को define करेंगे और यहां पर मैंने क्योंकि
1:20
already cell phone करके class बना रखी है तो मैं इसको my cell phone कर
1:23
दूंगा और इसके अंदर मैं take snap method को implement करूंगा but अभी
1:27
मैं सिर्फ यहां पर camera interface बना रहा हूं। इसके बाद मैं
1:31
यहां पर record video बनाऊंगा एक यहां पर function। record video यहां
1:38
पर मैंने बना दिया और भी हमारे पास camera interface में बहुत सारे methods हो सकते
1:42
थे but क्योंकि ये सिर्फ एक example है इसमें basic मैं यहां पर रखने वाला हूँ अब
1:46
मैं यहां पर एक interface wifi बनाऊंगा और इसके अंदर ये होगा void
1:51
get networks और उसी के साथ साथ हमारा होगा in fact मैं
1:55
यहां पर void get networks नहीं करूंगा, मैं यहां पर return करूंगा
1:59
एक string array मैं यहां पर लिखूंगा string और उसके बाद। मैं
2:04
लिखूंगा get networks और मैंने यहां पर string get networks बना दिया
2:07
है। उसके बाद मैं यहां पर लिखूंगा void connect to network और
2:13
यहां पर एक हमारा network का नाम आएगा network मैं यहां पर
2:17
चीजों को जल्दी से simplify करके लिखना चाहता हूं, मैं यहां पर
2:21
आप लोगों को overwhelm नहीं करना चाहता ज्यादा complicated चीजों से but
2:25
यहां पर आप लोग बस कुछ ऐसा समझ लो कि यहां पर मैंने दो methods बनाए
2:29
हैं interface wifi में। जो कि get networks और connect to a
2:32
network है। अब यहां पर हम लोग और भी बहुत सारे interfaces को implement
2:36
कर सकते थे। जैसे कि मैंने आप लोगों को बताया था GPS का example हम लोगों ने लिया था
2:39
यहां पर हमने कहा था कि जो smartphone है वो एक media player भी है but हम लोग
2:43
अभी के लिए camera और wifi interface को implement करेंगे but हम
2:47
लोग करेंगे क्या कि cell phone class बनाएंगे जो कि एक basic class
2:50
होगी, cell phone class के अंदर दो methods होंगे एक तो call
2:56
number और उसके बाद। हमारे पास मैं यहां पर लिख देता हूं
3:03
calling और उसके बाद मैं यहां पर लिख दूंगा phone number। और
3:10
आप लोगों को समझ में आएगा यहां पर मैं क्या कर रहा हूं और मैं इसको
3:14
जल्दी जल्दी लिख कर आप लोगों को explain करता हूं कि ये क्या है। मैंने यहां पर call number
3:17
method बनाया है और ये take snap method यहां पर नहीं आएगा
3:21
ये take snap method में लेकर जाऊंगा smart phone में तो अभी के लिए इसको आप
3:25
लोग ignore करो take snap method हमारा यहां पर नहीं आया ये जो हमारा
3:28
cell phone है इससे सिर्फ आप किसी number को call कर सकते हो और
3:33
उसी के साथ साथ आप क्या कर सकते हो? pick call कोई भी आपकी
3:36
call आ रही है तो आप उसको pick कर सकते हो, ठीक है। आप उसको
3:40
उठा सकते हो phone को और यहां पर किस number से आ रही है call
3:45
ये आप लोगों को दिखाया जाएगा और आप लोग उसको उठा लोगे
3:49
तो connecting ठीक है इस तरह से। मान लो आपका connect हो
3:54
जाएगा एक बार आप लोगों ने call उठा ली तो बहुत ही simple सा मैंने यहां पर class बनाया
3:57
है by any means ये कोई एक असली phone नहीं है, हम
4:01
कुछ phone वोन नहीं बना रहे हैं यहां पर मैं आप लोगों को दोबारा बता देता हूं, ये interface
4:05
के सिर्फ examples हैं। और real world में ऐसे ही काम करती है
4:08
जब आप android development वगैरह करेंगे तब आपको समझ में आएगा कि बहुत
4:14
similarly काम करती हैं इसके तो interface camera लिया interface wifi लिया
4:18
एक cellphone class ली अब मैं एक class बनाऊंगा और मैं कहूंगा class
4:21
smartphone और ये extend करेगी my cell phone को, ठीक है, my
4:27
cell phone को और इसको मैं my smartphone बना देता हूं। my
4:31
smartphone extend करेगी my cell phone को और implement करेगी कुछ interfaces
4:35
को जैसे कि WiFi ठीक है wifi को implement करेगी और उसी
4:40
के साथ साथ हमारा एक camera interface है उसको ये implement करेगी
4:44
और उसी के साथ साथ हमारे और भी interfaces हो सकते थे but
4:47
अभी के लिए सिर्फ ये दो interfaces हैं तो मैं यहां पर इसकी body को लिख सकता
4:51
हूं। ठीक है। एक बार मैंने wifi और camera interface को बोला
4:55
कि मैं implement कर रहा हूं तो मुझे ये सारे methods को। कुछ
4:59
इस तरह से implement करना तो मैं जरा यहां पर इसको uncomment
5:02
कर देता हूं, comment out हुई हुई है चीजें यहां पर, तो मैं इसको जरा uncomment कर देता
5:06
हूँ और चीजों को सा और खूबसूरत बना देता हूं। ठीक है
5:10
तो ये देखो यहां पर हमारा जो take snap है वो यहां पर कुछ इस
5:13
तरह से implement कर दिया है। तो वो ही take snap implement कर दिया है
5:17
avoid record video भी मुझे यहां पर implement करना अब क्योंकि मेरे
5:21
पास यहां पर बहुत सारी similar interfaces और classes है, मैं just
5:25
इस example के लिए my camera, my wifi इस तरह से इनके
5:29
नाम रख देता हूं ताकि कुछ ऐसा हो कि यहां पर मैं
5:34
ऐसे कर सकूं, ठीक है, तो my camera, my wifi मैंने यहां पर लिख दिया है और
5:37
यहां पर हम लोग लिखने वाले हैं public और ये सारे के
5:41
सारे methods implement हो चुके हैं। तो मैंने यहां पर take snap को implement
5:45
करना है, take snap के साथ साथ record video को मुझे यहां पर implement
5:48
करना है और मैंने यही सारा काम इन सारे methods के लिए
5:52
भी कर लिया। तो at this point हमारे पास take snap record
5:56
video, get networks और connect to network methods हैं और ये methods
6:01
class my smartphone में हैं। मैं इस my smartphone को बना रहा
6:04
हूँ my cell phone से और ये implement कर रहे हैं my wifi
6:08
और my camera interfaces को यानी कि इन पर force किया जा रहा है कि ये
6:11
इसके methods और इसके methods को implement करेंगे define करेंगे। यहां पर
6:16
मैं जल्दी से क्या करता हूं कि एक main method बनाता हूं और main
6:20
method बनाने के बाद आप लोगों को एक नया object बना के दिखाता हूं, मैं
6:24
यहां पर लिखूंगा my smartphone MS is equal to new my smartphone
6:31
और उसके बाद मैं आपको। पर लिख सकता हूं MS dot get
6:34
networks और जैसे ही मैं ऐसा करूंगा तो मुझे एक काम और
6:38
करना और वो ये है कि मुझे इस को एक string array
6:42
में store करना तो मैं यहां पर कुछ इस तरह से लिख देता हूं
6:46
A is equal to MS dot get networks और मैं यहां पर
6:50
क्या करूंगा मैं जल्दी से एक for each loop का इस्तेमाल करूंगा और
6:53
यहां पर मैं लिखूंगा for item in और यहां पर लिख दूंगा
6:58
array और उसके बाद मैं यहां पर लिख दूंगा। print कर दो
7:02
item को ठीक है तो सारे items जो हैं वो print हो जाएंगे और इस
7:06
for each loop को लिखने के बाद इस program को मैं जल्दी से run करूंगा और
7:09
आप लोग देखो यहां पर सारे के सारे network की list आ गई है, ठीक
7:13
है? तो ये हमने क्या किया है कि जो example मैंने आप लोगों को दिया था
7:17
पिछले video में उस example को हम लोगों ने यहां पर implement कर
7:20
दिया है but यहां पर मैं आप लोगों को बताना चाहता था कि default
7:24
methods के बारे में default methods क्या होते हैं? तो देखो एक
7:28
interface में static और default methods हो सकते हैं। मैंने आप लोगों को static
7:31
methods के बारे में already बताया था। static method एक ऐसा method
7:35
होता है जो कि object से associated नहीं होता है, वो associated होता है एक
7:39
class से या फिर एक interface से और interface से क्यों associated
7:43
वो हो सकता है क्योंकि interface का हम reference बना सकते हैं
7:47
और ये मैं आप लोगों को आगे बताऊंगा तो static method in
7:51
interfaces को आप लोग एक मिनट के लिए side में रख के default method वाली बात
7:54
सुनो। Default methods enable us to add new functionality। existing interfaces अभी
8:01
ये feature java eight में introduce किया गया था और क्यों किया गया था ये
8:04
मैं आप लोगों को बताता हूं। आप अगर एक interface को update करना चाहते
8:08
हैं तो आप लोग उसको update नहीं कर सकते जैसे कि मैं आप लोगों को example
8:12
देता हूं। मान लो my camera में मैंने take snap record video
8:16
और मान लो मैं यहां पर एक और डालना चाहता हूं record four
8:20
K video ठीक है और मैं जैसे ही इसको add करूंगा यहां
8:23
पर तो आप लोग देखना नीचे error हमको मिलेगा और ये error कुल मिला
8:27
के बाद इतनी बोल रहा है। कि भाई देखो ये record four की video तो आपने
8:31
इसमें implement किया नहीं और ऐसा करने से क्या होगा कि पूरी
8:35
की पूरी जो आगे की classes है जो कि इस interface को implement
8:39
कर रही है या फिर बहुत सारी classes में भी इस interface को
8:43
implement कर रही हूँ, वो सारी की सारी classes fail हो जाएंगी
8:46
और हमको error मिलेगा और हमको बार बार जाकर उन सारी classes में
8:50
इस को fix करना तो इसीलिए एक quick fix के तौर पर
8:54
default methods को allow किया गया interfaces में, तो मैं यहां पर लिखूंगा। default
8:59
void record four K और मैं इसको यहीं पर implement कर देता
9:04
हूं और मैं यहां पर लिख देता हूं, recording in record। in
9:11
in और मैं यहां पर लिख दूंगा four की ठीक है। और
9:15
ऐसा करने से क्या हुआ कि ये method भी इसमें add हो गया और मुझे इस method
9:19
को यहां पर implement करने की जरूरत भी नहीं अब अगर मैं
9:22
चाहूँ तो क्या मैं इस method को यहां पर कुछ इस तरह
9:26
से override कर सकता हूं, record four के video को अगर मैं
9:31
यहां पर record four के video को कुछ इस तरह से override करूँ
9:35
तो ये जो method है वो काम नहीं करेगा, ये वाला method काम
9:38
करेगा। तो मैं चाहूं तो इसको reimplement कर सकता हूं, आगे override कर
9:42
सकता हूँ। but अभी के लिए ये नहीं है तब मैं आप लोगों को दिखाना चाहता
9:45
हूं कि आपका program कैसा behave करेगा, आपका program error सबसे पहले
9:50
throw नहीं करेगा। उसके बाद एक बार मैंने यहां पर object बनाया तो मैं
9:53
इस object पर इस method को call करता हूं, मैं यहां पर लिखूंगा MS
9:57
dot record four K video ये जो record four K video मैंने बनाया है, मैं
10:01
इसको run करूंगा और आप लोगों को यहां पर getting list of network
10:05
से पहले देखने को मिलेगा recording in four K जैसे कि आप देख सकते हो, ठीक है
10:09
recording in four K देखने को मिला। अब मान लो कि मैं
10:16
कुछ इस तरह से बोलता हूं इसमें बोलता हूं record four K video में मान लो मैं चाहता हूं कि एक snap लेकर four K
10:19
video record हो मेरे smart phone में, मैं for some reason चाहता हूं इस
10:23
functionality को तो मैं लिखूंगा taking snap and। and recording in four
10:28
K ठीक है। एक बार मैंने इस method को override कर दिया
10:32
तो क्या होगा ये वाला method काम करेगा ऊपर वाला method काम नहीं करेगा
10:36
तो आप लोग देखो यहां पर लिख कर आ रहा है taking snap and recording in four K। तो
10:40
अगर आप चाहो तो java आपको रोकेगा नहीं, आप add कर सकते
10:45
हो एक interface को implement करने के बाद भी उसमें methods आप methods
10:48
add कर सकते हो। तो अगर आप लोगों को कोई पूछे कि आपने
10:52
क्यों इसमें record four K video add किया interface में। तो मेरा
10:56
simple सा जवाब यहां पर ये होगा कि मैं जितने भी programs
11:01
इस interface को implement कर रहे हैं उसमें ये default method add
11:04
करना चाहता था और at the same time मैं functionality को break
11:08
नहीं करना चाहता था यानी कि मैं बाकी interfaces जो इसको implement कर रहे
11:12
हैं, मैं force नहीं करना चाहता था इसकी implementation तब मैं क्या
11:16
करूंगा तब मैं इस तरह से, add कर सकता हूं default methods
11:20
so this is how default methods work। अब मैं यहां पर आप लोगों को एक बात बताना चाहता
11:23
हूं कि ये default methods, abstract classes, interfaces ये सब चीजें आप
11:28
लोगों के लिए बहुत confusing हो जाएंगी और बहुत सारे लोग क्या करते
11:31
हैं कि बहुत ज्यादा इनमें differences ढूंढने की कोशिश करते हैं, तो
11:36
differences मैंने आप लोगों को already बता दिया but जैसेजैसे आप use
11:40
करोगे इन सब चीजों को जैसे कि आप development करोगे या may be आप
11:43
java में कोई app वगैरह बना रहे हो, web app बना रहे हो, तो
11:47
आप लोगों को वहां पर जैसे जैसे आप libraries वगैरह use करोगे, अपने
11:51
आप clarity आती जाएगी, आपको पता चलता जाएगा कि क्यों use करते
11:54
हैं default methods क्या होते हैं default methods क्यों आप लोग एक
11:59
abstract class को use करोगे, एक interface की जगह या फिर एक interface
12:02
को use करोगे एक abstract class की जगह। तो इन सवालों को आप लोगों को
12:06
कुछ देर तक hold देना जब तक आप real world में चीजों को implement
12:09
नहीं कर रहे हो तब तक और जैसे जैसे आप real world में implement करोगे चीजों
12:13
को जैसे कि app वगैरह बनाओगे तो खुद clear होने लगेंगी। आप
12:17
लोगों को ये बस अभी के लिए मैं बताना चाहता हूं। तो यहां पर
12:21
मैंने notes में लिखा है interfaces can also include private methods for default
12:25
methods to use। ये बहुत important point है और मैं बताता हूं इसका क्या मतलब
12:28
है। अगर मैं इसमें private methods को include करूं यानी कि जो
12:32
हमारा interface है उसमें private methods को यहां पर मैं लिख दूं
12:36
मैं लिखूं private void और मैं मान लो लिख दूं greet और
12:44
मैं यहां पर कुछ इस तरह से लिखूं system dot out dot
12:48
println this ठीक है मान लो मैं लिखता हूं या good morning लिख देता हूं एक अच्छा
12:51
सा method बना देता हूं। तो क्या ये method use कर सकते
12:56
हैं वो classes जो कि इस interface को implement करते हैं जवाब
13:00
है नहीं क्योंकि ये private है तो इसको रखने का क्या हुआ? इसको
13:04
रखने का क्या हुआ? जब इसकी use करने वाली class जो my
13:08
smartphone है वो ही इसको use नहीं कर पा रही है। तो
13:12
क्या हुआ इसको रखने का, तो इस private method को रखने का
13:16
ये हुआ कि अगर आपके default method का logic बहुत हो जाता है, तो
13:20
आप यहां पर private method में डालकर private method को इस्तेमाल कर
13:25
सकते हो यानी कि मैं यहां पर कुछ इस तरह से greet का
13:28
इस्तेमाल कर सकता हूं और अभी मैं इस program को run करके दिखाऊं तो देखना
13:32
record four के video से पहले। यहां पर actually मैंने इसको override
13:37
कर दिया इस method को तो मैं एक काम करता हूं कि जो record four K video है इसको यहां से हटाता
13:40
हूं और आप लोगों को दिखेगा कि जैसे ही मैंने यहां पर
13:44
record four K video लिखा था उससे पहले good morning आ रहा है क्योंकि मैं greet method
13:48
को run कर रहा हूँ। क्या मैं greet को directly run कर सकता हूं? क्या मैं
13:52
directly greet को run कर सकता हूं? क्या मैं इस method को directly use कर सकता हूँ
13:56
इसका जवाब ना है, हमको पता है but एक बार देखते हैं
13:59
करके ठीक है obviously आप नहीं कर सकते क्योंकि ये private method है। तो
14:03
अगर आप लिखोगे भी ना कुछ इस तरह से तो यहां पर क्या मिलेगा आपको
14:07
ये कह रहा है कि greet is private access and ये वाला आपका जो
14:11
camera interface है तो please आप ऐसा ना करें ये बोल रहा है ठीक है तो मैं यहां पर
14:14
लिख देता हूं throws an error तो ये जो MS dot greet
14:18
है। तो मैं यहां पर लिख देता हूं throws an error ये
14:25
एक error throw करेगा, ठीक है, तो इसलिए यहां पर आप लोग नहीं
14:28
कर सकते इस great method को इस्तेमाल क्योंकि simply ये private है और मैं
14:32
आप लोगों को private public और protected को और अच्छे से बताऊंगा
14:36
packages वाले chapter में और वहां पर आप लोगों को इन सब चीजों को
14:40
और अच्छे से सीखने का मौका मिलेगा। तो अभी के लिए यहां पर
14:44
I hope आप लोगों को समझ में आ गयी जो मैंने class बनाई
14:48
interfaces को implement किया, मुझे यार comment में सब आप लोग ये बताओ कि क्या
14:51
अभी भी आपको classes interfaces और abstract classes से डर लगता है या फिर
14:55
आप लोगों को clear हो चुकी हैं या आप लोगों को लगता है कि अभी भी
14:59
clear नहीं है और अगर ऐसा लगता है आपको कि clear नहीं है
15:02
तो मुझे please नीचे comment में लिख कर बताना और अच्छे से
15:07
बताना कि यार क्या clear नहीं है, मैं आप लोगों को दोबारा से बताऊंगा
15:11
आने वाले videos में और इस series को यार मेरा plan यही
15:15
था कि यार मैं ऐसा रखना चाहता हूँ। कि बिल्कुल भी किसी को दिक्कत
15:19
नहीं होनी चाहिए और easiest way to learn Java के तौर पर
15:23
मैंने इसको launch किया था। I hope कि आप लोगों को आ
15:27
रहा है इस course में। अगर आप लोगों ने playlist access नहीं करी है तो उसको जरूर कर
15:31
लेना access। chapter के end में आप लोगों को सारे notes दे दूंगा और सारे के
15:34
सारे जो codes हैं वो मैं site पर upload कर दूंगा। अभी के लिए इस video
15:38
में इतना ही guys। Thank you so much guys for watching this video and
15:41
I will see you next time।