අතුරුමුහුණත එදිරිව වියුක්ත පන්තිය (සාමාන්‍ය OO)


1417

මා මෑතකදී දුරකථන සම්මුඛ සාකච්ඡා දෙකක් පවත්වා ඇති අතර එහිදී අතුරු මුහුණතක් සහ වියුක්ත පන්තියක් අතර ඇති වෙනස්කම් පිළිබඳව මගෙන් විමසා ඇත. මට සිතිය හැකි සෑම අංශයක්ම මම පැහැදිලි කර ඇත්තෙමි, නමුත් ඔවුන් මා වෙනුවෙන් නිශ්චිත යමක් සඳහන් කරන තෙක් බලා සිටින බව පෙනේ, එය කුමක්දැයි මම නොදනිමි.

මගේ අත්දැකීම් අනුව මම සිතන්නේ පහත සඳහන් කරුණු සත්‍ය බවයි. මට ප්‍රධාන කරුණක් මග හැරී ඇත්නම් කරුණාකර මට දන්වන්න.

අතුරුමුහුණත:

අතුරු මුහුණතක ප්‍රකාශිත සෑම ක්‍රමයක්ම උප පංතියේ ක්‍රියාත්මක කළ යුතුය. අතුරුමුහුණතක පැවතිය හැක්කේ සිදුවීම්, නියෝජිතයින්, ගුණාංග (C #) සහ ක්‍රම පමණි. පන්තියකට බහු අතුරුමුහුණත් ක්‍රියාත්මක කළ හැකිය.

වියුක්ත පන්තිය:

උප පංතිය විසින් ක්‍රියාත්මක කළ යුත්තේ වියුක්ත ක්‍රම පමණි. වියුක්ත පන්තියකට ක්‍රියාත්මක කිරීම් සමඟ සාමාන්‍ය ක්‍රම තිබිය හැකිය. වියුක්ත පන්තියට සිදුවීම්, නියෝජිතයින්, ගුණාංග සහ ක්‍රම හැරුණු විට පන්ති විචල්‍යයන් ද තිබිය හැකිය. පංතියකට එක් වියුක්ත පංතියක් ක්‍රියාත්මක කළ හැක්කේ සී # හි බහු උරුමයක් නොමැති නිසා පමණි.

  1. සියල්ලට පසු, සම්මුඛ පරීක්‍ෂකවරයා "ඔබට වියුක්ත ක්‍රම පමණක් සහිත වියුක්ත පංතියක් තිබේ නම් කුමක් කළ යුතුද? එය අතුරු මුහුණතකට වඩා වෙනස් වන්නේ කෙසේද?" මම පිළිතුර නොදැන සිටියද, ඉහත සඳහන් කළ පරිදි එය උරුමය යැයි මම සිතමි.

  2. තවත් සම්මුඛ පරීක්‍ෂකවරයෙක් මගෙන් විමසුවේ ඔබට අතුරු මුහුණත තුළ පොදු විචල්‍යයක් තිබේ නම් එය වියුක්ත පන්තියට වඩා වෙනස් වන්නේ කෙසේද? මම තරයේ කියා සිටියේ ඔබට අතුරු මුහුණතක් තුළ පොදු විචල්‍යයක් තිබිය නොහැකි බවයි. ඔහුට ඇසීමට අවශ්‍ය කුමක්දැයි මම නොදනිමි, නමුත් ඔහු සෑහීමකට පත් නොවීය.

මෙයද බලන්න :


413
මේ දෙක අතර වෙනස දැන ගැනීම වැදගත් යැයි මම සිතන අතර, මෙය හොඳ සම්මුඛ පරීක්ෂණ ප්‍රශ්නයක් නොවේ, ඉමෝ. රැකියාව OO මාතෘකා පිළිබඳ පොතක් ලිවීම හැර. ඔබ එම ඩිං වවුලන් සඳහා වැඩ නොකිරීමට වඩා හොඳයි.
ඇලන්

108
Lan ඇලන්: මම ඇත්ත වශයෙන්ම මෙය සම්මුඛ පරීක්ෂණ ප්‍රශ්නයක් ලෙස කැමතියි, නමුත් මම මේ ගැන කිසිවෙකු මේ ආකාරයෙන් හංවඩු ගසන්නේ නැත - මම බොහෝ විට එය පළ කරන්නේ “ධූරාවලියක් නිර්වචනය කිරීමේදී වියුක්ත පාදක පන්තියක් හරහා අතුරු මුහුණතක් තෝරා ගන්නේ කොතැනින්ද? "හෝ ඊට සමාන දෙයක්.
රීඩ් කොප්සි

11
සමහර විට ඔවුන් වඩාත් සැලසුම් කේන්ද්‍රීය පිළිතුරකට පසුව විය හැකිය ... ඔබ මෙන් මම එය තාක්‍ෂණික ප්‍රශ්නයක් ලෙස සලකනු ඇත.
CurtainDog

16
මෙහි හොඳ වගු වෙනස්කම්: mindprod.com/jgloss/interfacevsabstract.html
රාජත්_ආර්

30
Ave කේව්: I insisted you can't have a public variable inside an interface.මම හිතන්නේ අතුරු මුහුණතට පොදු විචල්‍යයක් තිබිය හැකිය. ඇත්ත වශයෙන්ම අතුරු මුහුණතේ විචල්‍යයන් ස්වයංක්‍රීයව පොදු සහ අවසාන වේ.
ඉගෙන

Answers:


746

ඔබේ ප්‍රශ්නය පෙන්නුම් කරන්නේ එය “සාමාන්‍ය ඕඕ” සඳහා වන අතර, එය සැබවින්ම අවධානය යොමු කරන්නේ .NET මෙම යෙදුම් භාවිතා කිරීම කෙරෙහි ය.

.NET හි (ජාවා සඳහා සමාන):

  • අතුරුමුහුණත් වලට රාජ්‍යයක් හෝ ක්‍රියාත්මක කිරීමක් තිබිය නොහැක
  • අතුරු මුහුණතක් ක්‍රියාත්මක කරන පන්තියක් එම අතුරුමුහුණතේ සියලුම ක්‍රම ක්‍රියාත්මක කිරීම සැපයිය යුතුය
  • වියුක්ත පංතිවල රාජ්‍ය (දත්ත සාමාජිකයන්) සහ / හෝ ක්‍රියාත්මක කිරීම (ක්‍රම) අඩංගු විය හැකිය
  • වියුක්ත ක්‍රම ක්‍රියාත්මක නොකර වියුක්ත පංති උරුම කර ගත හැකිය (එවැනි ව්‍යුත්පන්න පන්තියක් වියුක්ත වුවද)
  • අතුරුමුහුණත් බහු-උරුම විය හැකිය, වියුක්ත පංති නොවිය හැකිය (මෙය බොහෝ විට අතුරුමුහුණත් වියුක්ත පංති වලින් වෙන්ව පැවතීමට ප්‍රධාන හේතුව විය හැකිය - සාමාන්‍ය එම්අයි හි බොහෝ ගැටලු ඉවත් කරන බහු උරුමයක් ක්‍රියාත්මක කිරීමට ඒවා අවසර දෙයි).

සාමාන්‍ය OO නියමයන් ලෙස, වෙනස්කම් අවශ්‍යයෙන්ම මනාව අර්ථ දක්වා නැත. නිදසුනක් ලෙස, සමාන දෘඩ අර්ථ දැක්වීම් ඇති C ++ ක්‍රමලේඛකයින් ඇත (අතුරුමුහුණත් යනු ක්‍රියාත්මක කළ නොහැකි වියුක්ත පංතිවල දැඩි උප කුලකයකි), සමහරු සමහර පෙරනිමි ක්‍රියාත්මක කිරීම් සහිත වියුක්ත පන්තියක් තවමත් අතුරු මුහුණතක් හෝ වියුක්ත නොවන බව පැවසිය හැකිය. පන්තියට තවමත් අතුරු මුහුණතක් අර්ථ දැක්විය හැකිය.

ඇත්ත වශයෙන්ම, අථත්ය නොවන අතුරුමුහුණත (NVI) නමින් C ++ idiom එකක් ඇත, එහිදී පොදු ක්රම පුද්ගලික අථත්ය ක්රමවලට 'තල්ලු' කරන අථත්ය නොවන ක්රම වේ:


7
ඔබට ස්තුතියි. මම හිතන්නේ ඔබේ පිළිතුරේ තත්වය + සියලු විවේක පිළිබඳ හොඳ දළ විශ්ලේෂණයක් සඳහන් වන බැවින්, ඔබේ ප්‍රතිචාරය අවසාන පිළිතුර ලෙස සලකුණු කරමි. ඔබ හරි, මම සාමාන්‍ය OO ඉල්ලා සිටියෙමි, මගේ පළමු සම්මුඛ පරීක්‍ෂකවරයා සාමාන්‍ය OO ඉල්ලා සිටි නමුත් මම C # පුද්ගලයෙක් බැවින් මම එය අමතක කරමි. ;-) එසේම C ++ පැහැදිලි කිරීම සඳහා ස්තූතියි, සෑම විටම c ++ මනස පිම්බීමකි.
හූමන්

6
මයිකල් විසින් සපයන ලද පැහැදිලි කිරීමේ ප්‍රධාන කරුණක් නම්, අතුරු මුහුණතක් ක්‍රියාත්මක කිරීමේදී ඔබ සියලු සාමාජිකයන් අතුරු මුහුණතේ ක්‍රියාත්මක කළ යුතු බවයි, නමුත් වියුක්ත පන්තියකින් උරුම වන විට එහි දෙමව්පියන්ගේ සාමාජිකයන් ක්‍රියාත්මක කිරීම සඳහා ළමා පන්තියක් අවශ්‍ය නොවේ
ගිලර්මෝ ගෝමස්

82
+1: සම්මුඛ පරීක්ෂණයට සත්කාර කරන වඳුරන් වෙනත් භාෂා OO වෙනස් ආකාරයකින් ක්‍රියාත්මක කරන බව නොදැන සිටීම ගැන මම ඔට්ටු ඇල්ලීමට කැමැත්තෙමි.
කක්ෂයේ සැහැල්ලු රේස්

2
@JL ගැටලුව තිබෙන්නේ කොහේදැයි මම නොදනිමි. ඔබ වියුක්ත පන්තිය සමඟ වියුක්ත ක්‍රමය ව්‍යාකූල කර ඇති බව පෙනේ. වියුක්ත ක්‍රම ක්‍රියාත්මක කිරීමක් නොමැත. කෙසේ වෙතත්, වියුක්ත පංතියක් තුළ , සමහර ක්‍රම වියුක්ත විය හැකිය (එනම් ක්‍රියාත්මක නොකර) සහ තවත් සමහරක් ඇත්ත වශයෙන්ම ක්‍රියාත්මක කළ හැකිය.
xji

19
ජාවා 8 හි, ඔබට දැන් අතුරු මුහුණත් වල පෙරනිමි ක්‍රම සහ ස්ථිතික ක්‍රම තිබිය හැකි බව සලකන්න, එයින් අදහස් වන්නේ ජාවා අතුරුමුහුණත් ක්‍රියාත්මක කළ හැකි බවයි. මෙහි යොමුව . නිසැකවම ඔබ ප්‍රධාන වශයෙන් .NET වෙත යොමු කරන ලදි, එබැවින් මෙය ජාවා වෙත යොමු කරන නිරීක්ෂණයක් පමණි.
davtom

871

ප්‍රතිසමයක් ගැන: මම ගුවන් හමුදාවේ සිටියදී, නියමු පුහුණුවට ගොස් USAF (එක්සත් ජනපද ගුවන් හමුදාවේ) නියමුවෙකු බවට පත්විය. එම අවස්ථාවේදී මට කිසිවක් පියාසර කිරීමට සුදුසුකම් නොතිබූ අතර ගුවන් යානා වර්ගයේ පුහුණුවට සහභාගී වීමට මට සිදුවිය. මා සුදුසුකම් ලැබූ පසු, මම නියමුවෙක් (වියුක්ත පන්තිය) සහ සී -141 නියමුවෙක් (කොන්ක්‍රීට් පන්තිය) විය. මගේ එක් පැවරුමකදී මට අමතර රාජකාරියක් ලබා දෙන ලදි: ආරක්ෂක නිලධාරී. දැන් මම තවමත් ගුවන් නියමුවෙකු සහ සී -141 ගුවන් නියමුවෙකු වූ නමුත් මම ආරක්ෂක නිලධාරි රාජකාරිද ඉටු කළෙමි. ආරක්ෂක නිලධාරියෙකු වීමට ගුවන් නියමුවෙකු අවශ්‍ය නොවීය, අනෙක් පුද්ගලයින්ටද එය කළ හැකිව තිබුණි.

සියලුම යූඑස්ඒඑෆ් නියමුවන්ට යම් යම් ගුවන් හමුදා පුළුල් රෙගුලාසි අනුගමනය කළ යුතු අතර සියලුම සී -141 (හෝ එෆ් -16, හෝ ටී -38) නියමුවන් යූඑස්ඒඑෆ් නියමුවන් ය. ඕනෑම කෙනෙකුට ආරක්ෂක නිලධාරියෙකු විය හැකිය. එබැවින්, සාරාංශ කිරීමට:

  • නියමු: වියුක්ත පන්තිය
  • සී -141 නියමුවා: කොන්ක්‍රීට් පන්තිය
  • ආරක්ෂිත නිලධාරී: අතුරු මුහුණත

අමතර සටහන: මෙය අදහස් කළේ සංකල්පය පැහැදිලි කිරීමට උපකාරී වන ප්‍රතිසමයක් මිස කේතීකරණ නිර්දේශයක් නොවේ. පහත දැක්වෙන විවිධ අදහස් බලන්න, සාකච්ඡාව සිත්ගන්නා සුළුය.


87
මම ඇත්තටම මෙම ප්‍රතිසමයට කැමතියි, එය තරමක් සංකීර්ණ මාතෘකාවක් පැහැදිලි කිරීම සඳහා සරල උදාහරණයක් භාවිතා කරයි
කෙවින් බෝවර්සොක්ස්

13
සංකීර්ණ OO පාරිභාෂිතය තේරුම් ගැනීමට හොඳම ක්‍රමය මෙයයි. කෙටියෙන් කිවහොත්, සියලු න්‍යායන් වටින්නේ ඔබට එය ප්‍රායෝගිකව භාවිතා කළ හැකි විට පමණි. @ ජේ ඔබ නැවත සකස් කිරීම ඇත්තෙන්ම වෙඩි උණ්ඩ කිහිපයක් ග්‍රහණය කර ගැනීම පහසුය (බොහෝ විට අවශෝෂණය නොවී මනස විනිවිද යයි!)
එදිරිව

54
මම තවමත් ටිකක් ව්‍යාකූලයි. ඔබට දැන් F-16 සහ T-38 සුදුසුකම් ලැබී ඇති බව පවසන්න, එබැවින් දැන් පන්තියට Jayබහු පන්ති වලින් උරුම විය නොහැක (C-141 නියමු, F-16 නියමු සහ T-38 නියමු), එයින් අදහස් කරන්නේ කාගේ පන්ති අතුරුමුහුණත් විය යුතුද? ස්තූතියි
ඇලෙක්ස් ඔක්රුෂ්කෝ

37
මෙම උදාහරණයේ යම් දුර්වලතාවයක් හෙළි කරන බැවින් බොහෝ දෙනෙක් ඇලෙක්ස්ගේ ප්‍රකාශයට නිවැරදිව +1 ලබා දී ඇත. පළමුව, මම කියන්නේ ජේ තමන්ගේ පන්තියට වඩා සී -141 ගුවන් නියමුවාගේ අවස්ථාවක් වනු ඇති බවයි. මීට අමතරව, යූඑස්ඒඑෆ් හි සියලුම ගුවන් නියමුවන්ගෙන් 99% ක්ම වරකට එක් ගුවන් යානයකින් පමණක් සුදුසුකම් ලබා ඇති හෙයින් (එෆ්සීඑෆ් සහ පරීක්ෂණ නියමුවන් සැලකිය යුතු ව්‍යතිරේකයන්) මම බහුවිධ සුදුසුකම් සහ එය ක්‍රියාත්මක කරන්නේ කෙසේද යන්න සලකා බැලුවේ නැත. මීට වසර 50 කට පෙර එකවර විවිධ ගුවන් යානා 25 ක් සඳහා සුදුසුකම් ලැබූ ගුවන් නියමුවෙකු ගැන මා දන්නා පරිදි, මම සිතන්නේ අපට බහු උරුමයක් භාවිතා කිරීමට අවශ්‍ය නොවන ආකාරය නිදර්ශනය කරයි.
ජේ

20
එක් ගුවන් නියමුවෙකුට වරකට එක් ගුවන් යානයකට වඩා පියාසර කිරීමට අපහසු බැවින්, උපාය මාර්ග රටාව ක්‍රියාත්මක කිරීමට මෙය හොඳ අවස්ථාවක් වනු ඇත. ගුවන් නියමුවෙකුට සහතික එකතුවක් තිබිය යුතු අතර ධාවන වේලාවේදී නිවැරදි එකක් තෝරන්න. TakeOff, Land, Eject ක්‍රම සමඟ IFlyPlane අතුරුමුහුණත ක්‍රියාත්මක කරන හැසිරීම් ලෙස සහතික කිරීම කේතනය කෙරේ.
මයිකල් බ්ලැක්බර්න්

222

මම හිතන්නේ ඔවුන් සොයන පිළිතුර මූලික හෝ OPPS දාර්ශනික වෙනසයි.

ව්‍යුත්පන්න පංතිය වියුක්ත පන්තියේ මූලික ගුණාංග හා හැසිරීම බෙදා ගන්නා විට වියුක්ත පන්ති උරුමය භාවිතා වේ. පංතිය සැබවින්ම නිර්වචනය කරන ආකාරයේ හැසිරීම.

අනෙක් අතට අතුරුමුහුණත් උරුමය භාවිතා කරනුයේ පංති පර්යන්ත හැසිරීම් බෙදා ගන්නා විටය, ඒවා ව්‍යුත්පන්න පන්තිය නිර්වචනය නොකරයි.

උදා. මෝටර් රථයක් සහ ට්‍රක් රථයක් මෝටර් රථ වියුක්ත පන්තියක මූලික ගුණාංග හා හැසිරීම් රාශියක් බෙදාගනී, නමුත් ඔවුන් ඩ්‍රයිලර්ස් හෝ පවර් ජෙනරේටර් වැනි මෝටර් රථ නොවන පංති පවා බෙදා ගන්නා අතර අවශ්‍යයෙන්ම මෝටර් රථයක් හෝ ට්‍රක් රථයක් නිර්වචනය නොකරන උත්පාදක පිටාර ගැලීම වැනි පර්යන්ත හැසිරීම්ද බෙදා ගනී. , එබැවින් කාර්, ට්‍රක්, ඩ්‍රිලර් සහ පවර් ජෙනරේටර් යන සියල්ලටම එකම අතුරු මුහුණත IExhaust බෙදා ගත හැකිය.


32
මම හිතන්නේ ඊටත් වඩා හොඳ ප්‍රතිසමයක් වනුයේ අතුරු මුහුණතේ කොන්ත්‍රාත් ස්වභාවය පෙන්වන “යූස් ෆුවෙල්” ය .
Pureferret

Ure පිරිසිදු accelerateකිරීම ඔටෝමොබයිල් වියුක්ත පන්තියේ මූලික හැසිරීමේ කොටසක් නම් , එවිට කොන්ත්‍රාත් ස්වභාවය accelerateපෙන්නුම් කරන බව මට කිව නොහැක . කොන්ත්‍රාත් ස්වභාවය යනු කුමක්ද? අප කතා කරන සෑම විටම මෙම වචනය හඳුන්වා දුන්නේ ඇයි ? contractinterface
overexchange

@overexchange සාමාන්යයෙන් අතුරු මුහුණත නිසා පමණක් එහිදී දෙක 'පෘෂ්ඨ' තරග, නමුත් කොන්ත්රාත් වචනය ගිවිසුමක් ඇති බවයි ආකාරය දෙක 'පෘෂ්ඨ' තරග. පිටාර උත්පාදනය ඔබ 'එකඟ වන' දෙයක් බව (අවම වශයෙන් මට) තේරුමක් නැත. නමුත් ඉන්ධන භාවිතා කිරීමේ අවශ්‍යතාවය පිළිබඳව ඔබට එකඟ විය හැකි බව (නැවත මට) තේරුමක් ඇත.
Pureferret

1
මම විමසීමකදී මතු @Pureferret ලින්ක් ඒ සඳහා
overexchange

1
Ure පිරිසිදු interfaceපර්යන්ත හැසිරීම් අවශ්‍ය නම් , public interface List<E> extends Collection<E> {}මූලික හැසිරීම විස්තර කිරීමට නිර්මාණය කර ඇත්තේ listඇයි? මෙය ඇත්ත වශයෙන්ම ප්‍රසුන්ගේ පිළිතුරට පටහැනි ය. දෙකම Collection<E>සහ List<E>මෙහි අතුරුමුහුණත් වේ.
overexchange

199

කෙටි: සාරාංශ පන්ති සඳහා භාවිතා ආකෘති නිර්මාණය සමාන ආකාරයේ පන්ති පන්ති ධුරාවලිය (උදාහරණයක් ලෙස සත්ත්ව වියුක්ත පන්තියේ විය හැකි අතර මානව, ලයන්, කොටි කොන්ක්රීට් පන්ති ව්යුත්පන්න කළ හැක)

සහ

පංතිය ක්‍රියාත්මක කරන අතුරු මුහුණත ගැන සැලකිල්ලක් නොදක්වන සමාන / සමාන නොවන පන්ති 2 ක් අතර සන්නිවේදනය සඳහා අතුරුමුහුණත භාවිතා කරයි (උදා: උස අතුරුමුහුණත් දේපලක් විය හැකි අතර එය මානව, ගොඩනැඟිලි, ගස මඟින් ක්‍රියාත්මක කළ හැකිය.ඔබට ආහාර ගත හැකි නම් කමක් නැත , ඔබට පීනන්න පුළුවන් ඔබට මැරෙන්න පුළුවන් හෝ ඕනෑම දෙයක් .. එය වැදගත් වන්නේ ඔබට උස තිබිය යුතු දෙයක් පමණයි (ඔබේ පන්තියේ ක්‍රියාත්මක කිරීම).


7
මම මෙම පිළිතුරට ඇත්තෙන්ම කැමතියි, මන්දයත් සමහර විට ව්‍යුහය වෙනුවට (ව්‍යුහාත්මකව, අතුරු මුහුණතක් සහ පිරිසිදු වියුක්ත පංතියක්) සමාන වන අභිප්‍රාය වැනි වඩා වියුක්ත යමක් දෙස බැලීමෙන් දේවල් අතර “කුමක්ද” යන්නට පිළිතුරු දීමට අපහසුය. දෙයක්).
ලොස්ට්සලාඩ්

නිශ්චිත භාෂාවකින් වියුක්ත පංතියකට එදිරිව කළ හැකි දේ ගණනය කිරීම පහසුය, නමුත් වස්තුවට අර්ථය සහ වගකීම ලබා දීම සඳහා සාරාංශයක් නිර්මාණය කිරීම වඩා දුෂ්කර වන අතර ඔබ පැවසූ දේ OO හි 2 සංකල්පය සම්පූර්ණයෙන්ම නැවත ආරම්භ කරන්න. ස්තූතියි!
සැමුවෙල්

2
han ධනංජය: සත්ව පන්තියේ සංකල්පයෙන් උස වෙන් කළ හැකි ආකාරය සහ වෙනත් පන්තියකින් විය හැක්කේ කෙසේදැයි මට පෙනේ, නමුත් පන්ති අතර “සන්නිවේදනය” යන්නෙන් ඔබ හරියටම අදහස් කරන්නේ කුමක්ද? එය හුදෙක් තමන්ගේ පන්තිය සඳහා උස නිර්වචනය කිරීමකි, හරිද?
ටීටී

77

තවත් වෙනස්කම් කිහිපයක් තිබේ -

අතුරුමුහුණත් සඳහා ස්ථිර ක්‍රියාත්මක කිරීම් තිබිය නොහැක. වියුක්ත මූලික පන්ති වලට හැකිය. මෙමඟින් එහි ස්ථිර ක්‍රියාත්මක කිරීම් ලබා දීමට ඔබට ඉඩ සලසයි. මෙය වියුක්ත පාදක පන්තියකට සැබවින්ම වඩා දැඩි කොන්ත්‍රාත්තුවක් ලබා දීමට ඉඩ සලසයි, අතුරු මුහුණතක් ඇත්ත වශයෙන්ම විස්තර කරන්නේ පන්තියක් භාවිතා කරන ආකාරය පමණි. (වියුක්ත පාදක පන්තියට අථත්‍ය නොවන සාමාජිකයින් හැසිරීම නිර්වචනය කළ හැකි අතර එමඟින් මූලික පන්තියේ කතුවරයාට වැඩි පාලනයක් ලබා දේ.)

පන්තියක එකකට වඩා අතුරු මුහුණතක් ක්‍රියාත්මක කළ හැකිය. පංතියකට ව්‍යුත්පන්න කළ හැක්කේ තනි වියුක්ත පාදක පන්තියකින් පමණි. මෙය අතුරු මුහුණත් භාවිතා කරමින් බහුමාමක ධූරාවලියක් සඳහා ඉඩ ලබා දේ, නමුත් වියුක්ත පාදක පන්ති නොවේ. මෙය අතුරු මුහුණත් භාවිතා කරමින් ව්‍යාජ බහු උරුමයක් ලබා ගැනීමට ද ඉඩ සලසයි.

ඒපීඅයි එක කඩ නොකර සාරාංශ පාදක පන්ති v2 + වලින් වෙනස් කළ හැකිය. අතුරුමුහුණත් වල වෙනස්වීම් බිඳෙන වෙනස්කම් වේ.

[C # /. NET Specific] වියුක්ත පාදක පන්ති මෙන් නොව අතුරු මුහුණත් අගය වර්ග (ව්‍යුහයන්) සඳහා යෙදිය හැකිය. ව්‍යුහයන්ට වියුක්ත පාදක පන්ති වලින් උරුම විය නොහැක. මෙය වටිනාකම් වර්ග මත චර්යාත්මක ගිවිසුම් / භාවිත මාර්ගෝපදේශ යෙදීමට ඉඩ දෙයි.


6
පන්තියක එකකට වඩා අතුරු මුහුණතක් ක්‍රියාත්මක කළ හැකි ප්‍රධාන කරුණ සඳහා +1.
cgp

වියුක්ත පාදක පන්ති, IMO හරහා අතුරුමුහුණත් සඳහා ඇති එක් සැබෑ වාසිය එයයි. එසේ නොමැතිනම්, "අතුරු මුහුණත් වලට වඩා වියුක්ත පාදක පන්ති වලට වැඩි කැමැත්තක් දක්වන්න" යනුවෙන් පවසන .NET සැලසුම් මාර්ගෝපදේශ සමඟ මම එකඟ වෙමි
රීඩ් කොප්සි

කෙසේ වෙතත්, එය ඕනෑම පන්තියකට අතුරු මුහුණත් යෙදිය හැකි බව ඔබට එකතු කළ හැකි නම් එය උනන්දු වනු ඇත.
cgp

1
@altCognito: දෙවන ඡේදය සමඟ එය හසුරුවනු ලැබූ බවට සංඛ්‍යා. මෙය මට මතක් කර දුන්නේ අතුරු මුහුණත් අගය වර්ග මත ක්‍රියා කරන නිසා මම එය එකතු කළෙමි.
රීඩ් කොප්සි

මෙම නිවැරදි විස්තරයට බොහෝම ස්තූතියි. ඇත්තෙන්ම එය ඉතා ප්‍රයෝජනවත්. මම මෙහි අලුත් ය. "පිළිතුර" ලෙස ප්‍රතිචාර දෙකක් තෝරා ගැනීමට නොහැකි වීම අනුකම්පාවකි. මාව ව්‍යාකූල කරන එක් දෙයක් නම් ඔබ වියුක්ත 'පදනම්' පන්තිය භාවිතා කිරීමයි. සියලුම වියුක්ත පංති උප පංතියක මූලික පන්තියක් ලෙස අදහස් කෙරේ. 'පාදම' අමතර ලෙස නම් කරන්නේ ඇයි?
හූමන්

68

උරුමය
මෝටර් රථයක් සහ බස් රථයක් සලකා බලන්න. ඒවා වෙනස් වාහන දෙකකි. නමුත් තවමත්, ඔවුන් සුක්කානම්, තිරිංග, ගියර්, එන්ජින් වැනි පොදු ගුණාංග බෙදා ගනී.
එබැවින් උරුම සංකල්පය සමඟ මෙය පහත පරිදි නිරූපණය කළ හැකිය ...

public class Vehicle {
    private Driver driver;
    private Seat[] seatArray; //In java and most of the Object Oriented Programming(OOP) languages, square brackets are used to denote arrays(Collections).
    //You can define as many properties as you want here ...
}

දැන් බයිසිකලයක් ...

public class Bicycle extends Vehicle {
    //You define properties which are unique to bicycles here ...
    private Pedal pedal;
}

කාර් එකක් ...

public class Car extends Vehicle {
    private Engine engine;
    private Door[] doors;
}

එපමණයි උරුමය ගැන . අප ඉහත දුටු පරිදි වස්තූන් සරල පදනම් ආකාරවලට සහ ඒවායේ දරුවන් වර්ගීකරණය කිරීමට අපි ඒවා භාවිතා කරමු.

වියුක්ත පන්ති

වියුක්ත පන්ති යනු අසම්පූර්ණ වස්තු වේ. එය තවදුරටත් අවබෝධ කර ගැනීම සඳහා, නැවත වරක් වාහන ප්‍රතිසම සලකා බලමු.
වාහනයක් ධාවනය කළ හැකිය. හරිද? නමුත් විවිධ වාහන විවිධ ආකාරවලින් ධාවනය වේ ... නිදසුනක් ලෙස, ඔබ බයිසිකලයක් පදවන ආකාරයටම ඔබට වාහනයක් පැදවිය නොහැක.
ඉතින් වාහනයක ධාවක ක්‍රියාකාරිත්වය නිරූපණය කරන්නේ කෙසේද? එය කුමන වර්ගයේ වාහනයක් දැයි පරීක්ෂා කර බලා එය තමන්ගේම ක්‍රියාකාරිත්වයකින් ධාවනය කිරීම දුෂ්කර ය; නව වර්ගයේ වාහනයක් එක් කිරීමේදී ඔබට නැවත නැවතත් රියදුරු පන්තිය වෙනස් කිරීමට සිදුවේ.
වියුක්ත පංති හා ක්‍රමවේදයන්ගේ කාර්යභාරය මෙන්න. උරුම වූ සෑම දරුවෙකුටම මෙම ක්‍රියාව ක්‍රියාත්මක කළ යුතු බව පැවසීමට ඔබට ඩ්‍රයිව් ක්‍රමය වියුක්ත ලෙස අර්ථ දැක්විය හැකිය.
ඉතින් ඔබ වාහන පන්තිය වෙනස් කරන්නේ නම් ...

//......Code of Vehicle Class
abstract public void drive();
//.....Code continues

බයිසිකලය සහ මෝටර් රථය එය ධාවනය කරන්නේ කෙසේද යන්න ද නියම කළ යුතුය. එසේ නොමැති නම්, කේතය සම්පාදනය නොවන අතර දෝෂයක් විසි වේ.
කෙටියෙන් කිවහොත්, වියුක්ත පංතිය යනු අසම්පූර්ණ කාර්යයන් සහිත අර්ධ වශයෙන් අසම්පූර්ණ පන්තියකි, එය උරුම වූ දරුවන් විසින්ම නියම කළ යුතුය.

අතුරුමුහුණත් අතුරුමුහුණත් මුළුමනින්ම අසම්පූර්ණයි. ඔවුන්ට කිසිදු ගුණාංගයක් නොමැත. ඔවුන් ඇඟවුම් කරන්නේ උරුම වූ දරුවන්ට යමක් කිරීමට හැකියාවක් ඇති බවයි ...
ඔබ සතුව විවිධ වර්ගයේ ජංගම දුරකථන තිබේ යැයි සිතමු. ඔවුන් එක් එක් විවිධ කාර්යයන් කිරීමට විවිධ ක්රම තිබේ; උදා: පුද්ගලයෙකු අමතන්න. දුරකථනයේ නිෂ්පාදකයා එය කරන්නේ කෙසේදැයි නියම කරයි. මෙහිදී ජංගම දුරකථනවලට අංකයක් ඇමතිය හැකිය - එනම් එය ඇමතිය හැකි ය. මෙය අතුරු මුහුණතක් ලෙස නිරූපණය කරමු.

public interface Dialable {
    public void dial(Number n);
}

මෙහිදී ඩයලබල් නිෂ්පාදකයා විසින් අංකයක් අමතන්නේ කෙසේද යන්න නිර්වචනය කරයි. ඔබට එය ඇමතීමට අංකයක් ලබා දිය යුතුය.

// Makers define how exactly dialable work inside.

Dialable PHONE1 = new Dialable() {
    public void dial(Number n) {
        //Do the phone1's own way to dial a number
    }
}

Dialable PHONE2 = new Dialable() {
    public void dial(Number n) {
        //Do the phone2's own way to dial a number
    }
}


//Suppose there is a function written by someone else, which expects a Dialable
......
public static void main(String[] args) {
    Dialable myDialable = SomeLibrary.PHONE1;
    SomeOtherLibrary.doSomethingUsingADialable(myDialable);
}
.....

මෙයින් වියුක්ත පංති වෙනුවට අතුරුමුහුණත් භාවිතා කරමින්, ඩයලබල් භාවිතා කරන ශ්‍රිතයේ ලේඛකයා එහි ගුණාංග ගැන කරදර විය යුතු නැත. උදා: එය ස්පර්ශ තිරයක් හෝ ඩයල් පෑඩ් එකක් තිබේද, එය ස්ථාවර ලෑන්ඩ්ලයින් දුරකථනයක් හෝ ජංගම දුරකථනයක්ද? එය ඇමතිය හැකි දැයි ඔබ දැනගත යුතුය; එය ඩයලබල් අතුරුමුහුණත උරුම කර ගනීද?

වැදගත්ම දෙය නම්, යම් දවසක ඔබ ඩයලබල් වෙනත් එකක් සමඟ මාරු කරන්නේ නම්

......
public static void main(String[] args) {
    Dialable myDialable = SomeLibrary.PHONE2; // <-- changed from PHONE1 to PHONE2
    SomeOtherLibrary.doSomethingUsingADialable(myDialable);
}
.....

ඩයලබල් භාවිතා කරන ශ්‍රිතය ඩයලබල් අතුරුමුහුණතේ නිශ්චිතව දක්වා ඇති තොරතුරු හැර වෙනත් තොරතුරු මත රඳා නොපවතින හෙයින් කේතය තවමත් පරිපූර්ණව ක්‍රියාත්මක වන බවට ඔබට සහතික විය හැකිය. ඔවුන් දෙදෙනාම ඩයලබල් අතුරුමුහුණතක් ක්‍රියාත්මක කරන අතර ශ්‍රිතය සැලකිලිමත් වන එකම දෙය එයයි.

වස්තූන් පොදු කාර්යයක් බෙදා ගන්නා තාක් දුරට (ඔබ ලෑන්ඩ්ලයින් හෝ ජංගම දුරකථනයකට වෙනස් විය හැකි සේම, ඔබට අංකයක් ඇමතීමට අවශ්‍ය තාක් දුරට) වස්තූන් අතර අන්තර් ක්‍රියාකාරිත්වය සහතික කිරීම සඳහා අතුරු මුහුණත් බහුලව භාවිතා වේ. කෙටියෙන් කිවහොත්, අතුරුමුහුණත් යනු කිසිදු ගුණාංගයකින් තොරව වියුක්ත පංතිවල වඩා සරල අනුවාදයකි.
එසේම, ඔබට අවශ්‍ය තරම් අතුරුමුහුණත් ක්‍රියාත්මක කිරීමට (උරුම කර ගැනීමට) හැකි නමුත් ඔබට දිගු කළ හැක්කේ (උරුම කර ගත හැකි) තනි මාපිය පන්තියක් පමණි.

තවත් තොරතුරු සාරාංශ පන්ති එදිරිව අතුරුමුහුණත්


"අතුරුමුහුණත් වල කිසිදු ගුණාංගයක් නොමැත" යන්න සත්‍යයක් නොවේ.
බිගයිස්

Ig බිජි, ජාවා අතුරුමුහුණත් වල ගුණාංග වලට ඉඩ නොදේ. වෙනත් භාෂාවල ද එය එසේ යැයි මම සිතුවෙමි. කරුණාකර ඔබට තවත් විස්තර කළ හැකිද?
fz_salam

මම යොමු කරන්නේ C # /. Net වෙතයි. කරුණාකර උදාහරණය බලන්න
බිගයිස්

# C # සඳහා බිජිස්, අතුරු මුහුණත් වලට ගුණාංග තිබිය හැකි අතර, එමඟින් බහු උරුම ගැටලුව නැවත හඳුන්වා දෙන්නේ නැද්ද? පංතියක් එකම දේපල අර්ථ දක්වා ඇති බහු අතුරුමුහුණත් භාවිතා කරන විට කුමක් සිදුවේද? කුතුහලයෙන් යුතුව ස්තූතියි
stackPusher

pphappycoder: re: "මෙන්න වියුක්ත පංති වෙනුවට අතුරුමුහුණත් භාවිතා කිරීමෙන්, එහි ගුණාංග ගැන කරදර විය යුතු නැත. උදා: එයට ස්පර්ශ තිරයක් හෝ ඩයල් පෑඩ් තිබේද, එය ස්ථාවර ලෑන්ඩ්ලයින් දුරකථනයක් හෝ ජංගම දුරකථනයක්ද? ඔබට අවශ්‍ය වන්නේ එය ඩයලබල් කළ හැකි දැයි දැන ගන්න; - ඔබට මෙය කේත උදාහරණයකින් පෙන්විය හැකිද, එය උරුම වන්නේ කෙසේදැයි
TTT

45

javaමෙම ප්‍රශ්නයට පිළිතුරු සැපයීම සඳහා ඔබ OOP භාෂාවක් ලෙස සලකන්නේ නම් , ජාවා 8 නිකුතුව ඉහත පිළිතුරු වල සමහර අන්තර්ගතයන් යල්පැන ඇති බවට හේතු වේ. දැන් ජාවා අතුරුමුහුණතට කොන්ක්‍රීට් ක්‍රියාත්මක කිරීම සමඟ පෙරනිමි ක්‍රම තිබිය හැකිය.

ඔරකල් වෙබ් අඩවියinterface සහ abstractපන්තිය අතර ප්‍රධාන වෙනස්කම් සපයයි .

නම් වියුක්ත පන්ති භාවිතා කිරීම සලකා බලන්න :

  1. සමීපව සම්බන්ධිත පන්ති කිහිපයක් අතර කේතය බෙදා ගැනීමට ඔබට අවශ්‍යය.
  2. ඔබේ වියුක්ත පංතිය දීර් extend කරන පන්තිවලට බොහෝ පොදු ක්‍රම හෝ ක්ෂේත්‍ර ඇති බව ඔබ අපේක්ෂා කරයි, නැතහොත් පොදු (ආරක්ෂිත සහ පෞද්ගලික වැනි) හැර වෙනත් ප්‍රවේශ විකරණ අවශ්‍ය වේ.
  3. ස්ථිතික නොවන හෝ අවසාන නොවන ක්ෂේත්‍ර ප්‍රකාශ කිරීමට ඔබට අවශ්‍යය.

නම් අතුරු මුහුණත් භාවිතා කිරීම සලකා බලන්න :

  1. සම්බන්ධයක් නැති පන්ති ඔබේ අතුරු මුහුණත ක්‍රියාත්මක කරනු ඇතැයි ඔබ අපේක්ෂා කරයි. උදාහරණයක් ලෙස, බොහෝ සම්බන්ධයක් නැති වස්තූන් Serializableඅතුරු මුහුණත ක්‍රියාත්මක කළ හැකිය .
  2. ඔබට විශේෂිත දත්ත වර්ගයක හැසිරීම නියම කිරීමට අවශ්‍ය නමුත් එහි හැසිරීම ක්‍රියාත්මක කරන්නේ කවුරුන්ද යන්න ගැන සැලකිලිමත් නොවේ.
  3. වර්ගයේ බහු උරුමයෙන් ප්‍රයෝජන ගැනීමට ඔබට අවශ්‍යය.

සරල වචන වලින්, මම භාවිතා කිරීමට කැමතියි

අතුරුමුහුණත: සම්බන්ධයක් නැති වස්තූන් විසින් කොන්ත්රාත්තුවක් ක්රියාත්මක කිරීම

වියුක්ත පංතිය: බහු ආශ්‍රිත වස්තු අතර එකම හෝ වෙනස් හැසිරීම ක්‍රියාත්මක කිරීම

දේවල් පැහැදිලි ආකාරයකින් තේරුම් ගැනීමට කේත උදාහරණය දෙස බලන්න: අතුරු මුහුණතක් සහ වියුක්ත පන්තියක් අතර වෙනස මා පැහැදිලි කළ යුත්තේ කෙසේද?


33

සම්මුඛ පරීක්‍ෂකවරු අමුතු ගසක් ගසති. C # සහ Java වැනි භාෂා සඳහා වෙනසක් ඇත, නමුත් C ++ වැනි වෙනත් භාෂාවල නොමැත. OO න්‍යාය මේ දෙකෙන් වෙන්කර හඳුනා නොගනී, හුදෙක් භාෂාවේ වාක්‍ය ඛණ්ඩයයි.

වියුක්ත පංතියක් යනු ක්‍රියාත්මක කිරීම සහ අතුරු මුහුණත (පිරිසිදු අථත්‍ය ක්‍රම) යන දෙකම සහිත පන්තියකි. අතුරුමුහුණත් සාමාන්‍යයෙන් ක්‍රියාත්මක කිරීමක් නොමැති නමුත් පිරිසිදු අථත්‍ය කාර්යයන් පමණි.

සී # හෝ ජාවා හි කිසිදු ක්‍රියාත්මක කිරීමකින් තොරව වියුක්ත පංතියක් අතුරු මුහුණතකින් වෙනස් වන්නේ එයින් උරුම වීමට භාවිතා කරන වාක්‍ය ඛණ්ඩයේ පමණක් වන අතර ඔබට උරුම විය හැක්කේ එකකින් පමණි.


සතියකට පෙර මම එම ප්‍රශ්නයම ඇසුවෙමි, මට ජාවා සමඟ අත්දැකීම් නැත, නමුත් මම දැන් C ++ සමඟ වැඩ කරමින් සිටිමි. ප්‍රශ්නය ඇසීමට පෙර සම්මුඛ පරීක්ෂක විසින් භාෂා නියම කර නොතිබුණි, එබැවින් මෙම නඩුවේ අතුරුමුහුණත් කිසිදු ආකාරයක රාජ්‍යයක් හෝ ක්‍රියාත්මක කිරීමක් නොමැති වියුක්ත පන්ති බව මම පැහැදිලි කළෙමි. එය ද අමුතු ප්‍රශ්නයක් බව මම එකඟ වෙමි.
dacabdi

31

අතුරුමුහුණත් ක්‍රියාත්මක කිරීමෙන් ඔබ උරුමය වෙනුවට සංයුතිය ("සබඳතා ඇත") ලබා ගනී ("යනු" සම්බන්ධතා). එය උරුමයක් වෙනුවට හැසිරීම් වල සංයුතියක් සාක්ෂාත් කර ගැනීම සඳහා අතුරුමුහුණත් භාවිතා කළ යුතු නිර්මාණ රටා වැනි දේ මතක තබා ගත යුතු වැදගත් මූලධර්මයකි.


17
අතුරුමුහුණත්, IMO, "ක්‍රියා-ලෙස-" සම්බන්ධතාවයකට වඩා ළඟා වේ. එන්කැප්සියුලේෂන් අතුරු මුහුණතකට වඩා සංයුතිය සාක්ෂාත් කරගනී.
රීඩ් කොප්සි

12
අතුරු මුහුණත් ක්‍රියාත්මක කිරීම සංයුතිය යටතේ පවතිනු ඇතැයි මම නොසිතමි.
පවන් දිට්ටකවි

ප්ලස්, IDisposable වැනි "හැකියාව" විස්තර කිරීමට අතුරු මුහුණත භාවිතා කරයි. මෙම පංතිවලට යමක් කළ හැකි බව පන්ති අතර ක්‍රියාකාරිත්වය බෙදා ගැනීමට එය භාවිතා කළේය. තවත් උදාහරණයක් කුරුල්ලෙකු හා තලයකින් IFlyable ක්‍රියාත්මක කළ හැකිය. නමුත් කුරුල්ලා ව්‍යුත්පන්න විය හැක්කේ එයාර් ක්‍රාෆ්ට් වෙතින් ගුවන් යානා ව්‍යුත්පන්න වූ පංති මැවිල්ලෙනි.
පීටර් වැන්ග්

26

අතුරුමුහුණත සහ වියුක්ත පංතිය පිළිබඳ ගැඹුර විස්තර මම පැහැදිලි කරමි. අතුරු මුහුණත සහ වියුක්ත පංතිය පිළිබඳ දළ විශ්ලේෂණයක් ඔබ දන්නේ නම්, අපි අතුරු මුහුණත භාවිතා කළ යුත්තේ කවදාද සහ අප වියුක්ත පන්තිය භාවිතා කළ යුත්තේ කවදාද යන්න පිළිබඳ පළමු ප්‍රශ්නය ඔබේ මනසට පැමිණේ. එබැවින් කරුණාකර අතුරු මුහුණත සහ වියුක්ත පන්තිය පිළිබඳ පැහැදිලි කිරීම පහතින් බලන්න.

  1. අපි අතුරුමුහුණත භාවිතා කළ යුත්තේ කවදාද?

    අපට අවශ්‍ය පිරිවිතරයන් ඇති බැවින් ක්‍රියාත්මක කිරීම ගැන ඔබ නොදන්නේ නම් අපි අතුරු මුහුණත සමඟ යමු

  2. අප වියුක්ත පන්තිය භාවිතා කළ යුත්තේ කවදාද?

    ක්‍රියාත්මක කිරීම ඔබ දන්නා නමුත් සම්පූර්ණයෙන්ම නොවේ නම් (අර්ධ වශයෙන් ක්‍රියාත්මක කිරීම) එවිට අපි යන්නේ සාරාංශ පන්තිය සමඟ ය.

    අතුරුමුහුණත

    සෑම ක්‍රමයක්ම පෙරනිමියෙන් පොදු වියුක්තය යනු අතුරු මුහුණත 100% පිරිසිදු වියුක්තය යන්නයි.

    සාරාංශය

    වියුක්ත පංතියේ ක්‍රියාත්මක කළ හැකි කොන්ක්‍රීට් ක්‍රමය යනු කුමක්ද?

    අතුරුමුහුණත

    අපට අතුරු මුහුණත පුද්ගලික, ආරක්ෂිත ලෙස ප්‍රකාශ කළ නොහැක

    ප්‍රශ්නය - අපි අතුරුමුහුණත පුද්ගලික සහ ආරක්‍ෂිත යැයි ප්‍රකාශ නොකරන්නේ ඇයි?

    පෙරනිමියෙන් අතුරුමුහුණත් ක්‍රමය පොදු වියුක්ත බැවින් අපි අතුරු මුහුණත පුද්ගලික හා ආරක්ෂිත යැයි ප්‍රකාශ නොකිරීමට හේතුව එයයි.

    අතුරුමුහුණත් ක්‍රමය
    අපට අතුරු මුහුණත පුද්ගලික, ආරක්ෂිත, අවසාන, ස්ථිතික, සමමුහුර්ත, ස්වදේශීය ලෙස ප්‍රකාශයට පත් කළ නොහැක .....

    මම එයට හේතුව දෙන්නෙමි: අපට සමමුහුර්ත ක්‍රමවේදය ප්‍රකාශයට පත් නොකිරීමට හේතුව අපට අතුරු මුහුණතේ වස්තුවක් නිර්මාණය කිරීමට නොහැකි වීම සහ සමමුහුර්ත කිරීම වස්තුව මත වැඩ කිරීම වන අතර පුතා හේතුව අප සමමුහුර්ත ක්‍රමය ප්‍රකාශයට පත් නොකිරීමට හේතුව තාවකාලික සංකල්පය ද අදාළ නොවේ.

    සාරාංශය

    අපි පොදු, පෞද්ගලික අවසාන ස්ථිතික සමඟ සතුටින් භාවිතා කරන්නෙමු .... එයින් අදහස් කරන්නේ වියුක්තව කිසිදු සීමාවක් අදාළ නොවන බවයි.

    අතුරුමුහුණත

    විචල්‍යයන් පෙරනිමියෙන් පොදු ස්ථිතික අවසාන වශයෙන් අතුරුමුහුණතෙහි ප්‍රකාශයට පත් කරනු ලැබේ, එබැවින් අප පුද්ගලික, ආරක්ෂිත ලෙස විචල්‍ය ලෙස ප්‍රකාශයට පත් නොකෙරේ.

    අතුරුමුහුණත් විචල්යය පෙරනිමියෙන් පොදු ස්ථිතික අවසාන සහ අවසාන විචල්‍යය වන බැවින් අස්ථායී විකරණකාරකය ද අදාළ නොවේ. එය අගය විචල්‍යයට පැවරූ පසු ඔබට අගය වෙනස් කළ නොහැක.

    වාෂ්පශීලී විචල්‍යය වෙනස්වීම් වල දිගටම පවතින බැවින් එය විරුද්ධ වේ. අවසාන වශයෙන් අප අතුරු මුහුණතේ වාෂ්පශීලී විචල්‍යය භාවිතා නොකිරීමට හේතුව එයයි.

    සාරාංශය

    වියුක්ත විචල්‍යයට පොදු ස්ථිතික අවසාන ප්‍රකාශ කිරීම අවශ්‍ය නොවේ.

මෙම ලිපිය ප්‍රයෝජනවත් වේ යැයි මම බලාපොරොත්තු වෙමි.


4
මම මෙම කරුණ සමඟ එකඟ නොවෙමි: Abstract class must have at lease one abstract method.ඔබ එය ක්‍රියාත්මක කරන තාක් කල් වියුක්ත ක්‍රමයක් නොමැතිව වියුක්ත පන්තියක් තිබිය හැකිය. යොමු: යොමු An abstract class is a class that is declared abstract—it may or may not include abstract methods.මූලාශ්‍රය: docs.oracle.com/javase/tutorial/java/IandI/abstract.html
ඩෙව්නර්

ඔබ කතා කරන්නේ තාක්ෂණික විස්තර සහ ක්‍රියාත්මක කිරීම ගැන ය, සාමාන්‍ය OOP අනුව ඔබ ප්‍රශ්නයට පිළිතුරු
සපයන්නේ නැත

26

සංකල්පමය වශයෙන් කිවහොත්, භාෂාව හෝ නිශ්චිතව ක්‍රියාත්මක කිරීම, රීති, ප්‍රතිලාභ සහ ඕනෑම අයෙකු හෝ දෙකම භාවිතා කරමින් ඕනෑම ක්‍රමලේඛන ඉලක්කයක් සපුරා ගැනීම, කේත / දත්ත / දේපල, බ්ලා බ්ලා, තනි හෝ බහු උරුමයන් සියල්ලම පසෙකට දැමිය හැකිය.

1- වියුක්ත (හෝ පිරිසිදු වියුක්ත) පන්තිය යනු ධූරාවලිය ක්‍රියාත්මක කිරීම සඳහා ය. ඔබේ ව්‍යාපාර වස්තු තරමක් ව්‍යුහාත්මකව සමාන යැයි පෙනේ නම්, මවු-දරු (ධූරාවලිය) ආකාරයේ සම්බන්ධතාවයක් නියෝජනය කරන්නේ නම් පමණක් උරුමය / වියුක්ත පන්ති භාවිතා වේ. ඔබේ ව්‍යාපාර ආකෘතියට ධූරාවලියක් නොමැති නම් උරුමය භාවිතා නොකළ යුතුය (මෙහිදී මම ක්‍රමලේඛන තර්කනය ගැන කතා නොකරමි. සමහර සැලසුම් රටාවන්ට උරුමය අවශ්‍ය වේ). සංකල්පමය වශයෙන්, වියුක්ත පංතිය යනු OOP හි ව්‍යාපාර ආකෘතියක ධූරාවලිය ක්‍රියාත්මක කිරීමේ ක්‍රමයකි, එයට අතුරුමුහුණත් සමඟ කිසිදු සම්බන්ධයක් නැත, ඇත්ත වශයෙන්ම වියුක්ත පන්තිය අතුරුමුහුණත සමඟ සංසන්දනය කිරීම අර්ථ විරහිත බැවින් දෙකම සංකල්පමය වශයෙන් මුළුමනින්ම වෙනස් දේවල් වේ, එය සම්මුඛ සාකච්ඡා වලදී විමසනුයේ සංකල්ප පරීක්ෂා කිරීම සඳහා වන අතර එය ක්‍රියාත්මක කිරීමේදී සැලකිලිමත් වන විට දෙකම තරමක් සමාන ක්‍රියාකාරිත්වයක් සපයන බව පෙනේ. තවද අපි ක්‍රමලේඛකයින් සාමාන්‍යයෙන් කේතීකරණය කෙරෙහි වැඩි අවධානයක් යොමු කරමු. [සාරාංශය වියුක්ත පන්තියට වඩා වෙනස් බව මතක තබා ගන්න].

2- අතුරුමුහුණතක් යනු කොන්ත්‍රාත්තුවක් වන අතර එය සම්පූර්ණ ව්‍යාපාර ක්‍රියාකාරිත්වය එකක් හෝ වැඩි ගණනක් නියෝජනය කරයි. එය ක්‍රියාත්මක වන්නේ උරුම නොවන්නේ එබැවිනි. ව්‍යාපාර වස්තුවකට (ධූරාවලියක කොටසක් හෝ නැත) සම්පූර්ණ ව්‍යාපාර ක්‍රියාකාරිත්වයන් ගණනාවක් තිබිය හැකිය. වියුක්ත පංති සමඟ එයට කිසිදු සම්බන්ධයක් නැත යන්නෙන් අදහස් කරන්නේ පොදුවේ උරුමයයි. නිදසුනක් වශයෙන්, මිනිසෙකුට RUN කළ හැකිය, අලියෙකුට RUN කළ හැකිය, කුරුල්ලෙකුට RUN කළ හැකිය, සහ එසේ නම්, විවිධ ධූරාවලීන්හි මෙම සියලු වස්තූන් RUN අතුරුමුහුණත හෝ EAT හෝ SPEAK අතුරුමුහුණත ක්‍රියාත්මක කරනු ඇත. මෙම අතුරුමුහුණත් ක්‍රියාත්මක කරන එක් එක් වර්ගයට වියුක්ත පංති ඇති බව ඔබ ක්‍රියාත්මක කළ හැකි බැවින් ක්‍රියාත්මක කිරීමට නොයන්න. ඕනෑම ධූරාවලියක වස්තුවකට එහි ධූරාවලිය හා කිසිදු සම්බන්ධයක් නැති ක්‍රියාකාරීත්වයක් (අතුරු මුහුණතක්) තිබිය හැකිය.

මම විශ්වාස කරන්නේ, අතුරු මුහුණත් නිර්මාණය කර ඇත්තේ බහුවිධ උරුමයන් ලබා ගැනීමට හෝ පොදු හැසිරීම් හෙළි කිරීමට නොවන අතර, ඒ හා සමානව, පිරිසිදු වියුක්ත පංති යනු අතුරු මුහුණත් අභිබවා යාමට නොවේ, නමුත් අතුරුමුහුණත යනු වස්තුවකට කළ හැකි ක්‍රියාකාරීත්වයකි (එම අතුරුමුහුණතේ කාර්යයන් හරහා) සහ වියුක්ත පන්තිය නියෝජනය කරන්නේ දෙමව්පියන්ගේ මූලික ව්‍යුහය (දේපල + ක්‍රියාකාරිත්වය) ඇති දරුවන් බිහි කිරීම සඳහා ධූරාවලියක මවුපියන්

වෙනස ගැන ඔබෙන් විමසූ විට, එය සැබවින්ම සංකල්පීය වෙනසකි.

මා විශ්වාස කරන පරිදි, සම්මුඛ පරීක්‍ෂකවරුන් දෙදෙනාම මේ දෙක අතර එක පේළියේ වෙනසක් අපේක්‍ෂා කළ අතර ඔබ අසමත් වූ විට ඔවුන් අනෙක් අය ලෙස ක්‍රියාත්මක කිරීමෙන් මෙම වෙනස කරා ඔබව ගෙන යාමට උත්සාහ කළහ.

ඔබට වියුක්ත ක්‍රම පමණක් සහිත වියුක්ත පන්තියක් තිබේ නම් කුමක් කළ යුතුද?


එය මෙම ප්‍රශ්නයට පිළිතුර ඉතා හොඳින් සාරාංශ කරයි.
pranavn

ව්‍යුහය දීර් vs කර ඇති ක්‍රියාකාරිත්වය ක්‍රියාත්මකයි, හොඳයි!
harshvchawla

21

.නෙට් සඳහා,

ඔබේ පිළිතුර දෙවන සම්මුඛ පරීක්‍ෂකවරයාට ද පළමු පිළිතුරයි ... වියුක්ත පංති ක්‍රියාත්මක කළ හැකි අතර, රාජ්‍ය, අතුරු මුහුණත් ...

සංස්කරණය කරන්න: තවත් සටහනක, අතුරු මුහුණතක් 'ක්‍රියාත්මක කිරීමට අර්ථ දක්වා ඇති' පන්ති විස්තර කිරීමට මම 'උප පංතිය' (හෝ 'උරුමය' වාක්‍ය ඛණ්ඩය) භාවිතා නොකරමි. මට නම්, අතුරු මුහුණතක් යනු එම අතුරු මුහුණත 'ක්‍රියාත්මක කිරීම' සඳහා අර්ථ දක්වා තිබේ නම් පන්තියක් විසින් අනුකූල විය යුතු කොන්ත්‍රාත්තුවේ අර්ථ දැක්වීමකි. එය කිසිවක් උරුම කර නොගනී ... ඔබ සෑම දෙයක්ම පැහැදිලිව එකතු කළ යුතුය.


2
ඔව්! රජයේ! දෙවන සම්මුඛ පරීක්‍ෂකවරයා අතුරු මුහුණතක් තුළ “පොදු විචල්‍යය” යැයි පැවසීමේ අමුතුම ක්‍රමයෙන් අදහස් කළේ එයයි. ගෝෂ්! වියුක්ත පංති වලට රාජ්‍ය තිබිය හැකිය, අතුරුමුහුණත් තිබිය නොහැක! ඔව්, අනෙක් සියල්ලෝම ඔවුන්ගේ උරුමයේ මාර්ග අතර ඇති වෙනස්කම් වලට එකඟ වෙති, ඒවා සඳහන් කිරීමට මට අමතක වූ නමුත් පසුව දැනගතිමි. :) සියලු දෙනාටම ස්තුතියි!
හූමන්

4
හුදෙක් රාජ්‍යයට වඩා .... වියුක්ත පංතිවලට ක්‍රියාත්මක කළ හැකිය. එනම්, ඔවුන් තුළ කේත සමඟ ක්‍රමවේදයන් තිබිය හැකි අතර එය ඇත්ත වශයෙන්ම ක්‍රියාත්මක වන අතර යමක් කරයි, එය මූලික පංතිවල අවස්ථා මගින් උරුම වී ක්‍රියාත්මක කරනු ලැබේ ... අතුරුමුහුණත් සමඟ එසේ නොවේ
චාල්ස් බ්‍රෙටනා

ඊටත් වඩා, එක් අර්ථයකින් ගත් කල, වියුක්ත පංති ක්ෂණික කළ හැකිය, ඒවා ක්ෂණිකව කළ යුත්තේ ව්‍යුත්පන්න පන්ති අර්ථ දැක්වීමක් භාවිතා කර මිස කෙලින්ම නොවේ. නමුත් වියුක්ත පංතියේ අර්ථ දක්වා ඇති රාජ්‍ය විචල්‍යයන් ව්‍යුත්පන්න පංතියේ නිදසුනක් නව-ඉන්ග් විසින් නිර්මාණය කරන ලද වස්තුව තුළ ක්ෂණිකව තහවුරු වේ. මෙම අවස්ථාව වියුක්ත පංතියේ නිදසුනක් මෙන්ම ව්‍යුත්පන්න පංතියේ නිදසුනකි - එය සියල්ලෙන් පසුව ව්‍යුත්පන්න වේ. අතුරු මුහුණතක් සඳහා මේ කිසිවක් සත්‍ය නොවේ.
චාල්ස් බ්‍රෙටනා

ඔබ අතුරු මුහුණතක් ක්‍රියාත්මක කිරීම සඳහා අර්ථ දක්වා ඇති පංතියක නිදසුනක් අළුත් කළ විට, එය එම අතුරුමුහුණතේ “නිදසුනක්” නොවේ, සියලු වාක්‍ය ඛණ්ඩය සම්පාදකයා විසින් පන්තිය සඳහා කේතය පරීක්ෂා කර සෑම හැසිරීමක්ම (ක්‍රමවේදය, දේපල , event, eventHandler, ආදිය) අතුරු මුහුණත මගින් අර්ථ දක්වා ඇති අතර එය පන්තියේ කේතය තුළ ක්‍රියාත්මක කර ඇත.
චාල්ස් බ්‍රෙටනා

20

අතුරුමුහුණත : ඔබට එකිනෙකට සම්බන්ධ විය හැකි හෝ නොවිය හැකි සංරචක මත රීතියක් ඇඟවීමට අවශ්‍ය නම් භාවිතා කළ යුතුය

වාසි:

  1. බහු උරුමයට ඉඩ දෙයි
  2. සන්දර්භය තුළ භාවිතා කරන්නේ කුමන ආකාරයේ වස්තුවක්ද යන්න නිරාවරණය නොකිරීමෙන් සාරාංශය සපයයි
  3. කොන්ත්රාත්තුවේ නිශ්චිත අත්සනක් මගින් අනුකූලතාව සපයයි

අවාසි:

  1. අර්ථ දක්වා ඇති සියලුම ගිවිසුම් ක්‍රියාත්මක කළ යුතුය
  2. විචල්යයන් හෝ නියෝජිතයන් සිටිය නොහැක
  3. නිර්වචනය කළ පසු සියලු පන්ති කඩ නොකර වෙනස් කළ නොහැක

වියුක්ත පංතිය : එකිනෙකාට අදාළ සංරචක සඳහා මූලික හෝ පෙරනිමි හැසිරීම් හෝ ක්‍රියාත්මක කිරීමට ඔබට අවශ්‍ය තැන භාවිතා කළ යුතුය

වාසි:

  1. අතුරුමුහුණතට වඩා වේගවත්
  2. ක්‍රියාත්මක කිරීමේදී නම්‍යශීලී බවක් ඇත (ඔබට එය සම්පූර්ණයෙන් හෝ අර්ධ වශයෙන් ක්‍රියාත්මක කළ හැකිය)
  3. ව්‍යුත්පන්න පංති කඩ නොකර පහසුවෙන් වෙනස් කළ හැකිය

අවාසි:

  1. ක්ෂණිකව කළ නොහැක
  2. බහු උරුමයට සහාය නොදක්වයි

වේගයෙන් අර්ථ දක්වන්න. එය වැදගත් ද? එහි තේරුම කුමක්ද? වියුක්ත පංතියක ශ්‍රිත ආයාචනය සඳහා වන opcode අතුරුමුහුණතක ක්‍රියාකාරී ආයාචනය සඳහා opcode වලට වඩා වේගවත්ද?
denis631

is denis631 වියුක්ත පන්තිය අතුරු මුහුණතට වඩා තරමක් වේගවත් බැවින් සෙවුම් සහ ඇමතුම් අතුරු මුහුණත ක්‍රමය තුළ සම්බන්ධ වේ. මෙම coderanch.com/t/503450/java/abstract-class-faster-interface
bourax වෙබ්මාස්ටර්

17

මම හිතන්නේ ඔවුන් ඔබේ ප්‍රතිචාරයට අකමැති නිසා ඔබ නිර්මාණ වෙනුවට තාක්‍ෂණික වෙනස්කම් ලබා දුන්නා. ප්‍රශ්නය මට ට්‍රොල් ප්‍රශ්නයක් මෙනි. ඇත්ත වශයෙන්ම, අතුරුමුහුණත් සහ වියුක්ත පංති සම්පූර්ණයෙන්ම වෙනස් ස්වභාවයක් ඇති බැවින් ඔබට ඒවා සැසඳිය නොහැක. අතුරු මුහුණතක කාර්යභාරය කුමක්ද සහ වියුක්ත පන්තියක භූමිකාව කුමක්ද යන්න පිළිබඳ මගේ දැක්ම මම ඔබට ලබා දෙන්නෙමි.

අතුරුමුහුණත: වඩා නඩත්තු කළ හැකි, පරිමාණය කළ හැකි සහ පරීක්ෂා කළ හැකි යෙදුමක් ලබා ගැනීම සඳහා කොන්ත්‍රාත්තුවක් සහතික කිරීමට සහ පන්ති අතර අඩු සම්බන්ධතාවයක් ඇති කිරීමට භාවිතා කරයි.

වියුක්ත පංතිය: භාවිතා කරනුයේ එකම වගකීම් සහිත පන්ති අතර යම් කේතයක් සාධක කිරීමට පමණි. OOP හි බහු උරුමය නරක දෙයක් වීමට ප්‍රධාන හේතුව මෙය බව සලකන්න, මන්ද පංතියක් බොහෝ වගකීම් හසුරුවා නොගත යුතුය ( ඒ වෙනුවට සංයුතිය භාවිතා කරන්න).

එබැවින් අතුරුමුහුණත් සැබෑ වාස්තු විද්‍යාත්මක කාර්යභාරයක් ඇති අතර වියුක්ත පංති ක්‍රියාත්මක කිරීම පිළිබඳ විස්තරයක් පමණි (ඔබ එය නිවැරදිව භාවිතා කරන්නේ නම්).


14
  1. අතුරුමුහුණත:
    • අපි ක්‍රම ක්‍රියාත්මක නොකරමු (හෝ අර්ථ දක්වන්නෙමු), ව්‍යුත්පන්න පංති වලදී අපි එය කරන්නෙමු.
    • අපි අතුරු මුහුණත් වල සාමාජික විචල්‍යයන් ප්‍රකාශ නොකරමු.
    • අතුරුමුහුණත් HAS-A සම්බන්ධතාවය ප්‍රකාශ කරයි. ඒ කියන්නේ ඒවා වස්තු වෙස් මුහුණක්.
  2. වියුක්ත පන්තිය:
    • වියුක්ත පන්තියේ ක්‍රම ප්‍රකාශ කිරීමට හා අර්ථ දැක්වීමට අපට හැකිය.
    • අපි එහි ඉදිකිරීම්කරුවන් සඟවන්නෙමු. ඒ කියන්නේ කිසිම වස්තුවක් කෙලින්ම නිර්මාණය වී නැහැ.
    • වියුක්ත පන්තියට සාමාජික විචල්‍යයන් රඳවා ගත හැකිය.
    • ව්‍යුත්පන්න පංති වලින් වියුක්ත පංතියට උරුම වන අතර එයින් අදහස් කරන්නේ ව්‍යුත්පන්න පංතිවල වස්තූන් වෙස්මුහුණු නොකිරීම, එය වියුක්ත පන්තියට උරුම වීමයි. මෙම නඩුවේ සම්බන්ධතාවය IS-A වේ.

මෙය මගේ මතයයි.


13
After all that, the interviewer came up with the question "What if you had an 
Abstract class with only abstract methods? How would that be different
from an interface?" 

ඩොක්ස් පැහැදිලිවම පවසන්නේ වියුක්ත පන්තියක අඩංගු වන්නේ වියුක්ත ක්‍රම ප්‍රකාශයන් පමණක් නම් එය ඒ වෙනුවට අතුරු මුහුණතක් ලෙස ප්‍රකාශ කළ යුතු බවයි.

An another interviewer asked me what if you had a Public variable inside
the interface, how would that be different than in Abstract Class?

අතුරුමුහුණත් වල විචල්‍යයන් පෙරනිමියෙන් පොදු ස්ථිතික හා අවසාන වේ. වියුක්ත පංතියේ සියලුම විචල්‍යයන් පොදු නම් කුමක් ද යන ප්‍රශ්නය සැකසිය හැකිය. හොඳයි, ඒවා තවමත් අතුරුමුහුණත් වල විචල්‍යයන් මෙන් නොව ස්ථිතික හා අවසාන නොවන විය හැකිය.

අවසාන වශයෙන් මම ඉහත සඳහන් කළ කරුණු වලට තවත් එක් කරුණක් එකතු කරමි - වියුක්ත පංති තවමත් පන්ති වන අතර තනි උරුම ගසකට වැටෙන අතර අතුරු මුහුණත් බහු උරුමයකින් පැවතිය හැකිය.


12

සීඑල්ආර් වෙතින් සී # හරහා ජෙෆ්රි රිච්ටර් විසින් පිටපත් කරන ලදි ...

“මම මූලික වර්ගයක් හෝ අතුරු මුහුණතක් සැලසුම් කළ යුතුද?” යන ප්‍රශ්නය මට බොහෝ විට අසන්නට ලැබේ. පිළිතුර සැමවිටම පැහැදිලි නැත.

ඔබට උදව් විය හැකි මාර්ගෝපදේශ කිහිපයක් මෙන්න:

■■ IS-A එදිරිව CAN-DO සම්බන්ධතාවය වර්ගයකට උරුම විය හැක්කේ එක් ක්‍රියාත්මක කිරීමක් පමණි. ව්‍යුත්පන්න වර්ගයට මූලික වර්ගය සමඟ IS-A සම්බන්ධතාවයක් ලබා ගත නොහැකි නම්, මූලික වර්ගයක් භාවිතා නොකරන්න; අතුරු මුහුණතක් භාවිතා කරන්න. අතුරුමුහුණත් මඟින් CAN-DO සම්බන්ධතාවයක් අදහස් කරයි. CAN-DO ක්‍රියාකාරීත්වය විවිධ වස්තු වර්ග වලට අයත් බව පෙනේ නම්, අතුරු මුහුණතක් භාවිතා කරන්න. නිදසුනක් ලෙස, වර්ගයකට තමා විසින්ම වෙනත් ආකාරයකට පරිවර්තනය කළ හැකිය (IConvertible), යම් වර්ගයකට තමා විසින්ම නිදසුනක් අනුක්‍රමිකකරණය කළ හැකිය (ISerializable), ආදිය. වටිනාකම් වර්ග System.ValueType වෙතින් ලබා ගත යුතු බව සලකන්න, එබැවින් ඒවා ව්‍යුත්පන්න කළ නොහැක. අත්තනෝමතික පාදක පන්තියකින්. මෙම අවස්ථාවේදී, ඔබ CAN-DO සම්බන්ධතාවයක් භාවිතා කළ යුතු අතර අතුරු මුහුණතක් අර්ථ දැක්විය යුතුය.

Use භාවිතයේ පහසුව අතුරුමුහුණතක සියලුම ක්‍රම ක්‍රියාත්මක කිරීමට වඩා සංවර්ධකයෙකු ලෙස ඔබට මූලික වර්ගයකින් ලබාගත් නව වර්ගයක් අර්ථ දැක්වීම පහසුය. මූලික වර්ගයට විශාල ක්‍රියාකාරිත්වයක් සැපයිය හැකි බැවින් ව්‍යුත්පන්න වර්ගයට අවශ්‍ය වන්නේ එහි හැසිරීමට සාපේක්ෂව කුඩා වෙනස් කිරීම් පමණි. ඔබ අතුරු මුහුණතක් සපයන්නේ නම්, නව වර්ගය සියලුම සාමාජිකයන් ක්‍රියාත්මක කළ යුතුය.

Implementation අඛණ්ඩව ක්‍රියාත්මක කිරීම අතුරු මුහුණත් කොන්ත්‍රාත්තුවක් කොතරම් හොඳින් ලේඛනගත කර තිබුණද, සෑම කෙනෙකුම සියයට සියයක්ම නිවැරදිව ක්‍රියාත්මක කරනු ඇතැයි සිතිය නොහැක. ඇත්ත වශයෙන්ම, COM මෙම ගැටලුවෙන්ම පීඩා විඳිති, එබැවින් සමහර COM වස්තු නිවැරදිව ක්‍රියා කරන්නේ මයික්‍රොසොෆ්ට් වර්ඩ් හෝ වින්ඩෝස් ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සමඟ පමණි. හොඳ පෙරනිමි ක්‍රියාත්මක කිරීමක් සමඟ මූලික වර්ගයක් ලබා දීමෙන්, ඔබ වැඩ කරන සහ හොඳින් පරීක්ෂා කර ඇති වර්ගයක් භාවිතා කිරීම ආරම්භ කරයි; ඔබට පසුව වෙනස් කිරීමට අවශ්‍ය කොටස් වෙනස් කළ හැකිය.

■■ අනුවාදය ඔබ මූලික වර්ගයට ක්‍රමයක් එකතු කළහොත්, ව්‍යුත්පන්න වර්ගය නව ක්‍රමයට උරුම වේ, ඔබ වැඩ කරන වර්ගයක් භාවිතා කිරීම ආරම්භ කරයි, පරිශීලකයාගේ ප්‍රභව කේතය නැවත සකස් කිරීම අවශ්‍ය නොවේ. අතුරු මුහුණතකට නව සාමාජිකයෙකු එකතු කිරීම අතුරු මුහුණතේ උරුමකරුට එහි ප්‍රභව කේතය වෙනස් කර නැවත සකස් කිරීමට බල කරයි.


1
B අබ්දුල්ලා ෂොයිබ් යනු ඕනෑම කෙනෙකුට කළ හැකි නමුත් කළ නොහැකි දෙයක් මෙහි වෙනසක් ඇත. මෙය මූලික හේතුවයි, අපට අතුරු මුහුණත අවශ්‍යයි. කළ හැකි හැසිරීම ද කොටසක් වනු ඇත abstract class.
overexchange

10

අතුරු මුහුණතක් සේවාවක් හෝ සේවා සමූහයක් සඳහා වන කොන්ත්‍රාත්තුවක් අර්ථ දක්වයි. සම්පුර්ණයෙන්ම සම්බන්ධ නොවූ පංති දෙකකට එකම අතුරුමුහුණතක් ක්‍රියාත්මක කළ හැකි නමුත් ඒවා ක්‍රියාත්මක කරන ආකාරයේ අතුරු මුහුණතේ පරාමිතියක් ලෙස එකිනෙකට වෙනස් ලෙස භාවිතා කළ හැකි පරිදි ඒවා බහුමාපකය තිරස් ආකාරයෙන් සපයයි. අතුරුමුහුණත් ක්‍රියාත්මක කිරීමේ තොරතුරු සපයන්නේ නැත.

වියුක්ත පංතියක් එහි උප කුලක සඳහා මූලික ව්‍යුහයක් නිර්වචනය කරයි, සහ විකල්ප වශයෙන් අර්ධ වශයෙන් ක්‍රියාත්මක කිරීම. වියුක්ත පංති බහුඅවයවිකතාව සිරස්, නමුත් දිශානත ආකාරයකින් සපයයි, එමඟින් වියුක්ත පන්තියට උරුම වන ඕනෑම පන්තියක් එම වියුක්ත පන්තියේ නිදසුනක් ලෙස සැලකිය හැකි නමුත් අනෙක් පැත්තෙන් නොවේ. වියුක්ත පංතිවලට බොහෝ විට ක්‍රියාත්මක කිරීමේ තොරතුරු අඩංගු විය හැකි නමුත් ඒවා තනිවම ක්ෂණිකව දැක්විය නොහැක- ඒවායේ උප පංති පමණක් “නවීකරණය” කළ හැකිය.

C # මඟින් අතුරු මුහුණත් උරුමයට ඉඩ සලසයි.


1
තිරස් හා සිරස් යන වචන භාවිතා කිරීමෙන් වෙනස සිතාගත හැකි විය.
Infinity

10

බොහෝ පිළිතුරු අවධානය යොමු කරන්නේ වියුක්ත පංතිය සහ අතුරුමුහුණත අතර තාක්ෂණික වෙනස මත ය , නමුත් තාක්ෂණික වශයෙන්, අතුරු මුහුණතක් මූලික වශයෙන් එක්තරා ආකාරයක වියුක්ත පන්තියක් (දත්ත හෝ ක්‍රියාත්මක කිරීමකින් තොරව එකක්) බැවින්, සංකල්පීය වෙනස වඩා රසවත් යැයි මම සිතමි. සම්මුඛ පරීක්ෂකයින් පසුව ය.

අතුරුමුහුණත යනු ගිවිසුම . එය නියම කරයි: "අපි එකිනෙකා සමඟ කතා කරන්න යන්නේ මේ ආකාරයටයි". එය එසේ නොවේ කරන නිසා, එය ඕනෑම ක්රියාත්මක කිරීම ලබා ගත නොහැකි යැයි කියනු ඕනෑම ක්රියාත්මක කිරීමට. එය කොන්ත්රාත්තුවකි. එය .hසී හි ඇති ශීර්ෂ ගොනු වැනි ය.

සාරාංශයේ පන්තියේ යනු අසම්පූර්ණ ක්රියාත්මක කිරීම . පංතියක් අතුරු මුහුණතක් ක්‍රියාත්මක කිරීමට හෝ නොකිරීමට ඉඩ ඇති අතර වියුක්ත පන්තියකට එය සම්පූර්ණයෙන්ම ක්‍රියාත්මක කිරීමට අවශ්‍ය නොවේ. කිසිදු ක්‍රියාවට නැංවීමකින් තොරව වියුක්ත පන්තියක් නිෂ් less ල ය, නමුත් මුළුමනින්ම නීතිමය ය.

මූලික වශයෙන් ඕනෑම පංතියක්, වියුක්ත හෝ නැත, එය කුමක්ද යන්න ගැන වන අතර අතුරු මුහුණතක් යනු ඔබ එය භාවිතා කරන ආකාරයයි . නිදසුනක් ලෙස: Animalසමහර මූලික පරිවෘත්තීය ක්‍රියාකාරකම් ක්‍රියාත්මක කරන වියුක්ත පංතියක් විය හැකි අතර, ක්‍රියාත්මක කිරීමක් ලබා නොදී හුස්ම ගැනීම සහ දුම්රිය එන්ජින් සඳහා වියුක්ත ක්‍රම නියම කිරීම, එයට ගිලන් හෝ පෙනහළු හරහා හුස්ම ගත යුතුද යන්න සහ එය පියාසර කිරීම, පිහිනීම, ඇවිදීම හෝ බඩගා යයි. Mount, අනෙක් අතට, අතුරු මුහුණතක් විය හැකිය, එය සත්වයා කුමන ආකාරයේ සතෙකු දැයි නොදැන (හෝ එය කිසිසේත්ම සතෙකු ද යන්න නොදැන) ඔබට සත්වයා පැදවිය හැකි බව නියම කරයි.

තිරය ​​පිටුපස, අතුරු මුහුණතක් මූලික වශයෙන් වියුක්ත ක්‍රම පමණක් සහිත වියුක්ත පන්තියක් වීම වැදගත් නොවේ. සංකල්පමය වශයෙන්, ඔවුන් සම්පූර්ණයෙන්ම වෙනස් භූමිකාවන් පුරවයි.


10

ඔබ ප්රවීණයන් න්යායික දැනුම තියෙනව හැකි පරිදි, මම මෙතන අය නැවත නැවත බොහෝ වචන වියදම් නැහැ, ඒ වෙනුවට මට අප භාවිතා කළ හැකි භාවිතා කළ නොහැකි / සරල උදාහරණයක් සමග පැහැදිලි කරන්න දෙන්න Interfaceහා Abstract class.

මෝටර් රථවල සියලුම අංග ලැයිස්තුගත කිරීම සඳහා ඔබ යෙදුමක් නිර්මාණය කරන බව සලකන්න. ඩිජිටල් ෆුවෙල්මීටර්, වායුසමීකරණය, ආසන ගැලපීම වැනි සමහර ගුණාංග සියලුම මෝටර් රථ සඳහා පොදු වන බැවින් විවිධ අවස්ථා වලදී ඔබට පොදු උරුමය අවශ්‍ය වේ. ඒ හා සමානව, අපට සමහර පංති සඳහා උරුමය අවශ්‍ය වන්නේ තිරිංග පද්ධතිය (ඒබීඑස්, ඊබීඩී) වැනි සමහර දේපල අදාළ වන්නේ සමහර මෝටර් රථ සඳහා පමණි.

පහත දැක්වෙන පන්තිය සියලුම මෝටර් රථ සඳහා මූලික පන්තියක් ලෙස ක්‍රියා කරයි:

public class Cars
{
    public string DigitalFuelMeter()
    {
        return "I have DigitalFuelMeter";
    }

    public string AirCondition()
    {
        return "I have AC";
    }

    public string SeatAdjust()
    {
        return "I can Adjust seat";
    }
}

එක් එක් කාර් සඳහා අපට වෙනම පන්තියක් ඇති බව සලකන්න.

public class Alto : Cars
{
    // Have all the features of Car class    
}

public class Verna : Cars
{
    // Have all the features of Car class + Car need to inherit ABS as the Braking technology feature which is not in Cars        
}

public class Cruze : Cars
{
    // Have all the features of Car class + Car need to inherit EBD as the Braking technology feature which is not in Cars        
}

වර්නා සහ ක ru ස් යන මෝටර් රථ සඳහා තිරිංග තාක්‍ෂණය උරුම කර ගැනීම සඳහා අපට ක්‍රමයක් අවශ්‍ය බව සලකන්න (ඇල්ටෝ සඳහා අදාළ නොවේ). දෙකම තිරිංග තාක්ෂණය භාවිතා කළද, "තාක්ෂණය" වෙනස් වේ. එබැවින් අපි වියුක්ත පංතියක් නිර්මාණය කරමින් සිටින අතර එම ක්‍රමය වියුක්ත ලෙස ප්‍රකාශයට පත් කරනු ලබන අතර එය එහි ළමා පන්තිවල ක්‍රියාත්මක කළ යුතුය.

public abstract class Brake
{
    public abstract string GetBrakeTechnology();
}

දැන් අපි මෙම වියුක්ත පන්තියෙන් උරුම වීමට උත්සාහ කරන අතර තිරිංග පද්ධතිය වර්නා සහ ක ru ස් හි ක්‍රියාත්මක වේ:

public class Verna : Cars,Brake
{
    public override string GetBrakeTechnology()
    {
        return "I use ABS system for braking";
    }       
}

public class Cruze : Cars,Brake
{
    public override string GetBrakeTechnology()
    {
       return "I use EBD system for braking";
    }         
}

ඉහත පන්ති දෙකේ ගැටලුව බලන්න? ළමුන් තුළ මෙම ක්‍රමය ක්‍රියාත්මක කළද C # .නෙට් ඉඩ නොදෙන බහු පන්ති වලින් ඔවුන්ට උරුම වේ. මෙන්න එය අතුරු මුහුණතේ අවශ්යතාව පැමිණේ.

interface IBrakeTechnology
{
    string GetBrakeTechnology();
}

ක්‍රියාත්මක කිරීම පහත දැක්වේ:

public class Verna : Cars, IBrakeTechnology
{
    public string GetBrakeTechnology()
    {
        return "I use ABS system for braking";
    }
}

public class Cruze : Cars, IBrakeTechnology
{
   public string GetBrakeTechnology()
   {
       return "I use EBD system for braking";
   }        
}

දැන් වර්නා සහ ක ru ස් හට අතුරු මුහුණතේ ආධාරයෙන් තමන්ගේම ආකාරයේ තිරිංග තාක්‍ෂණයන්ගෙන් බහු උරුමයක් ලබා ගත හැකිය.


4
උදාහරණ නිසා මෙය හොඳම පැහැදිලි කිරීමකි.
ඇඩම් මෙන්ඩෝසා

2
මොළය රැවටීමකින් තොරව මෙය මට අර්ථවත් කරයි. මම උත්සාහ කළේ මගේ සිසුන්ට කාර් ආදර්ශයක් ගෙන ඒමටයි. මෙය එකට තැබීමට කාලය යෙදවීම ගැන ස්තූතියි.
tazboy

9

අතුරුමුහුණත් යනු යම් හැසිරීමක් බලාත්මක කිරීම සඳහා සැහැල්ලු බර ක්‍රමයකි. එය සිතිය යුතු එක් ක්‍රමයකි.


8

මෙම පිළිතුරු සියල්ලම දිගු ය.

  • අතුරුමුහුණත් යනු හැසිරීම් අර්ථ දැක්වීම සඳහා ය.

  • වියුක්ත පංති යනු යම් දෙයක් එහි හැසිරීම් ඇතුළුව නිර්වචනය කිරීමයි. අපි සමහර විට අතුරු මුහුණතක් උරුම කර ගන්නා අමතර ගුණාංග සහිත වියුක්ත පන්තියක් නිර්මාණය කරමු.

ජාවා පංති සඳහා තනි උරුමයකට පමණක් සහය දක්වන නමුත් අතුරුමුහුණත් සඳහා කිසිදු සීමාවක් නොදක්වන්නේ මන්ද යන්නත් මෙය පැහැදිලි කරයි. කොන්ක්‍රීට් වස්තුවක් වෙනස් දේවල් විය නොහැකි නමුත් එයට වෙනස් හැසිරීම් තිබිය හැකි බැවිනි.


7

1) අතුරු මුහුණතක් පිරිසිදු වියුක්ත පංතියක් ලෙස දැකිය හැකිය, එය සමාන ය, නමුත් මෙය තිබියදීත්, අතුරු මුහුණතක් ක්‍රියාත්මක කිරීම හා වියුක්ත පන්තියකින් උරුම වීම සමාන නොවේ. ඔබ මෙම පිරිසිදු වියුක්ත පන්තියෙන් උරුම වූ විට ඔබ ධූරාවලියක් -> උරුමයක් නිර්වචනය කරයි, ඔබ නොමැති අතුරු මුහුණත ක්‍රියාත්මක කරන්නේ නම්, ඔබට අවශ්‍ය තරම් අතුරු මුහුණත් ක්‍රියාත්මක කළ හැකි නමුත් ඔබට උරුම විය හැක්කේ එක් පන්තියකින් පමණි.

2) ඔබට අතුරු මුහුණතක් තුළ දේපලක් අර්ථ දැක්විය හැකිය, එබැවින් එම අතුරු මුහුණත ක්‍රියාත්මක කරන පන්තියට එම දේපල තිබිය යුතුය.

උදාහරණයක් වශයෙන්:

  public interface IVariable
  {
      string name {get; set;}
  }

එම අතුරුමුහුණත ක්‍රියාත්මක කරන පන්තියට එවැනි දේපලක් තිබිය යුතුය.


7

මෙම ප්‍රශ්නය තරමක් පැරණි වුවත්, අතුරු මුහුණත් සඳහා තවත් කරුණක් එක් කිරීමට මම කැමතියි:

ඕනෑම යැපුම් එන්නත් මෙවලම් භාවිතයෙන් අතුරුමුහුණත් එන්නත් කළ හැකිය.


1
DI මෙවලමකට අතුරු මුහුණතක් ක්‍රියාත්මක කරන පන්තියක් එන්නත් කළ හැකි යැයි මම විශ්වාස කරමි. එවැනි සමහර මෙවලම් වලට වියුක්ත පන්තියකින් ලබාගත් පන්ති එන්නත් කළ හැකිය, නැතහොත් එය කළ නොහැකි යැයි ඔබ පවසනවාද?
ජෝන් සෝන්ඩර්ස්

6

සිට මගේ තවත් පිළිතුර බොහෝ විට අනෙක් එදිරිව එකක් භාවිතා කිරීමට විට සමඟ කටයුතු,:

මගේ අත්දැකීම් අනුව, ඔබට පන්ති කිහිපයක් ඇති විට අතුරු මුහුණත් වඩාත් සුදුසු වන්නේ එකම ක්‍රමයට හෝ ක්‍රමවලට ප්‍රතිචාර දැක්විය යුතු වන අතර එමඟින් එම කේතවල පොදු අතුරුමුහුණතට එරෙහිව ලිවිය හැකි වෙනත් කේත මඟින් ඒවා එකිනෙකට වෙනස් ලෙස භාවිතා කළ හැකිය. අතුරුමුහුණතක හොඳම භාවිතය වන්නේ ප්‍රොටෝකෝලය වැදගත් වන නමුත් යටින් පවතින තර්කනය එක් එක් පන්තිය සඳහා වෙනස් විය හැකිය. ඔබ වෙනත් ආකාරයකින් තර්කනය අනුපිටපත් කරන්නේ නම්, ඒ වෙනුවට වියුක්ත පන්ති හෝ සම්මත පන්ති උරුමය සලකා බලන්න.


6

අතුරුමුහුණත් වර්ග එදිරිව වියුක්ත මූලික පන්ති

අනුවර්තනය කරන ලද්දේ Pro C # 5.0 සහ .NET 4.5 රාමු පොතෙනි.

අතුරුමුහුණත් වර්ගය වියුක්ත පාදක පන්තියකට බෙහෙවින් සමාන බව පෙනේ. පංතියක් වියුක්ත ලෙස සලකුණු කළ විට, සියලු ව්‍යුත්පන්න වර්ග සඳහා බහුමාමක අතුරු මුහුණතක් සැපයීම සඳහා ඕනෑම වියුක්ත සාමාජික සංඛ්‍යාවක් අර්ථ දැක්විය හැකි බව මතක තබා ගන්න. කෙසේ වෙතත්, පංතියක් වියුක්ත සාමාජිකයන් සමූහයක් නිර්වචනය කළ විට පවා, ඕනෑම ඉදිකිරීම්කරුවන්, ක්ෂේත්‍ර දත්ත, වියුක්ත නොවන සාමාජිකයන් (ක්‍රියාත්මක කිරීම සමඟ) සහ යනාදිය නිර්වචනය කිරීමට ද නිදහස තිබේ. අනෙක් අතට, අතුරුමුහුණත් වල අඩංගු වන්නේ වියුක්ත සාමාජික අර්ථ දැක්වීම් පමණි. වියුක්ත මව් පංතියක් විසින් පිහිටුවන ලද බහුමාමක අතුරුමුහුණත එක් ප්‍රධාන සීමාවකට ගොදුරු වන අතර, ව්‍යුත්පන්න වර්ග පමණක් වියුක්ත මවුපියන් විසින් අර්ථ දක්වා ඇති සාමාජිකයින්ට සහාය වේ. කෙසේ වෙතත්, විශාල මෘදුකාංග පද්ධති වලදී, System.Object වලින් ඔබ්බට පොදු මාපියෙකු නොමැති බහු පන්ති ධූරාවලියක් වර්ධනය කිරීම ඉතා සුලභ ය. වියුක්ත පාදක පන්තියක වියුක්ත සාමාජිකයන් ව්‍යුත්පන්න වර්ග වලට පමණක් අදාළ වන හෙයින්, එකම බහුමාමක අතුරුමුහුණතට සහය දැක්වීම සඳහා විවිධ ධූරාවලීන් වර්ග වින්‍යාස කිරීමට අපට ක්‍රමයක් නොමැත. උදාහරණයක් ලෙස, ඔබ පහත වියුක්ත පන්තිය නිර්වචනය කර ඇතැයි උපකල්පනය කරන්න:

public abstract class CloneableType
{
// Only derived types can support this
// "polymorphic interface." Classes in other
// hierarchies have no access to this abstract
// member.
   public abstract object Clone();
}

මෙම අර්ථ දැක්වීම අනුව, ක්ලෝන් () ක්‍රමයට සහය දැක්විය හැක්කේ ක්ලෝනබල් ටයිප් දීර් extend කරන සාමාජිකයින්ට පමණි. මෙම මූලික පන්තිය දීර් extend නොකරන නව පන්ති මාලාවක් ඔබ නිර්මාණය කරන්නේ නම්, ඔබට මෙම බහුමාමක අතුරු මුහුණත ලබා ගත නොහැක. පංති සඳහා බහු උරුමයට C # සහාය නොදක්වන බව ඔබට මතක ඇති. එමනිසා, ඔබට මෝටර් රථයක් සහ ක්ලෝනබල් ටයිප් එකක් වන මිනි වෑන් රථයක් සෑදීමට අවශ්‍ය නම්, ඔබට එය කළ නොහැක:

// Nope! Multiple inheritance is not possible in C#
// for classes.
public class MiniVan : Car, CloneableType
{
}

ඔබ අනුමාන කරන පරිදි, අතුරු මුහුණත් වර්ග ගලවා ගනී. අතුරුමුහුණතක් නිර්වචනය කිරීමෙන් පසුව, එය ඕනෑම පන්තියකට හෝ ව්‍යුහයකට, ඕනෑම ධූරාවලියක් තුළ, ඕනෑම නාම අවකාශයක් තුළ හෝ ඕනෑම එකලස් කිරීමකින් (ඕනෑම .NET ක්‍රමලේඛන භාෂාවකින් ලියා ඇත) ක්‍රියාත්මක කළ හැකිය. ඔබට පෙනෙන පරිදි, අතුරුමුහුණත් ඉතා බහුඅවයවික වේ. පද්ධති නාම අවකාශයේ අර්ථ දක්වා ඇති ICloneable නම් වූ සම්මත .NET අතුරුමුහුණත සලකා බලන්න. මෙම අතුරුමුහුණත ක්ලෝන් () නම් තනි ක්‍රමයක් අර්ථ දක්වයි:

public interface ICloneable
{
object Clone();
}

6

දෙවන ප්රශ්නයට පිළිතුර: publicඅර්ථ විචල්ය interfaceවේ static finalඇති අතර පෙරනිමියෙන් publicදී විචල්ය abstractපන්තිය උදාහරණයක් විචල්ය වේ.


6

OOP හි අතුරු මුහුණතේ සහ වියුක්ත පන්තියේ හැසිරීම (සහ භාෂා ඒවා හසුරුවන ආකාරය) අවබෝධ කර ගැනීම වැදගත් බව මම විශ්වාස කරමි, නමුත් එක් එක් යෙදුමේ අර්ථය හරියටම තේරුම් ගැනීම ද වැදගත් යැයි මම සිතමි. ඔබට සිතාගත හැකිද?ifවචනයේ තේරුම ලෙස විධානය ක්‍රියාත්මක නොවන බව ? එසේම, ඇත්ත වශයෙන්ම සමහර භාෂාවන් අතුරු මුහුණතක් සහ වියුක්තයක් අතර ඇති වෙනස්කම් අඩු කරයි ... අහම්බෙන් දිනක් මෙම පද දෙක එක හා සමානව ක්‍රියාත්මක වන්නේ නම්, අවම වශයෙන් ඔබට ඒවායින් එකක් තිබිය යුත්තේ කොතැනද (සහ ඇයි) යන්න නිර්වචනය කළ හැකිය. සඳහා භාවිතා වේ.

ඔබ සමහර ශබ්ද කෝෂ සහ වෙනත් අකුරු කියවා බැලුවහොත් එකම පදය සඳහා විවිධ අර්ථයන් සොයාගත හැකි නමුත් පොදු අර්ථ දැක්වීම් කිහිපයක් ඇත. මම හිතන්නේ මෙම වෙබ් අඩවියෙන් මට හමු වූ මෙම අර්ථ දෙක ඇත්තෙන්ම හොඳ සහ සුදුසු ය.

අතුරුමුහුණත:

වෙනම හා සමහර විට නොගැලපෙන අංග effectively ලදායි ලෙස සම්බන්ධීකරණය කිරීමට ඉඩ සලසන දෙයක් හෝ තත්වයක්.

සාරාංශය:

වඩා පුළුල් හෝ සාමාන්‍ය හෝ ඕනෑම දෙයක අත්‍යවශ්‍ය ගුණාංග තමා තුළම සංකේන්ද්‍රණය වන දෙයක්; සාරය.

උදාහරණයක්:

ඔබ මෝටර් රථයක් මිලදී ගත් අතර එයට ඉන්ධන අවශ්‍යයි.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔබේ මෝටර් රථ මාදිලිය XYZප්‍රභේදයකි ABC, එබැවින් එය කොන්ක්‍රීට් මෝටර් රථයකි, මෝටර් රථයක නිශ්චිත අවස්ථාවකි. මෝටර් රථයක් සැබෑ වස්තුවක් නොවේ. ඇත්ත වශයෙන්ම, එය නිශ්චිත වස්තුවක් නිර්මාණය කිරීම සඳහා වියුක්ත ප්‍රමිති (ගුණාංග) සමූහයකි. කෙටියෙන් කිවහොත්, කාර් යනු වියුක්ත පංතියකි , එය “වඩා පුළුල් හෝ සාමාන්‍ය දෙයක අත්‍යවශ්‍ය ගුණාංග තමා තුළම සංකේන්ද්‍රණය වන දෙයක්” වේ.

කාර් අත්පොත පිරිවිතරයට ගැලපෙන එකම ඉන්ධන කාර් ටැංකිය පිරවීම සඳහා භාවිතා කළ යුතුය. යථාර්ථය නම්, ඕනෑම ඉන්ධන දැමීම සඳහා ඔබට සීමා කිරීමට කිසිවක් නැත, නමුත් එන්ජිම නිසියාකාරව ක්‍රියාත්මක වන්නේ නිශ්චිත ඉන්ධන සමඟ පමණි, එබැවින් එහි අවශ්‍යතා අනුගමනය කිරීම වඩා හොඳය. එකම ප්‍රභේදයේ අනෙකුත් මෝටර් රථ මෙන් එය පිළිගන්නා බව අවශ්‍යතා පවසයිABC සම්මත ඉන්ධන කට්ටලයක් .

වස්තු දිශානත දෘෂ්ටියකට අනුව, ප්‍රභේදයක් සඳහා ඉන්ධන ABCපංතියක් ලෙස ප්‍රකාශයට පත් නොකළ යුත්තේ නිශ්චිත මෝටර් රථ ප්‍රභේදයක් සඳහා කොන්ක්‍රීට් ඉන්ධන නොමැති බැවිනි. ඔබේ මෝටර් රථයට වියුක්ත පන්තියේ ඉන්ධන හෝ වාහන ඉන්ධන පිළිගත හැකි වුවද, ඔබේ මෝටර් රථ අත්පොතේ අවශ්‍යතා ක්‍රියාත්මක කරන, දැනට පවතින වාහන ඉන්ධනවලින් සමහරක් පිරිවිතරයන් සපුරාලන බව ඔබ මතක තබා ගත යුතුය. කෙටි දී, ඔවුන් ක්රියාත්මක කළ යුතු අතුරු මුහුණත ABCGenreFuel , වන "... ඵලදායී සම්බන්ධීකරණය කිරීම වෙනම හා සමහර විට පරස්පර විරෝධී අංග හැකියාව" .

අතිරේක

ඊට අමතරව, පංතිය යන වචනයේ තේරුම ඔබ මතකයේ තබා ගත යුතු යැයි මම සිතමි, එය (කලින් සඳහන් කළ වෙබ් අඩවියෙන්ම):

පන්තිය:

පොදු ලක්ෂණ, ලක්ෂණ, ගුණාංග හෝ ගති ලක්ෂණ හේතු කොට ගෙන කණ්ඩායමක් පිහිටුවීම ලෙස සැලකෙන පුද්ගලයන් හෝ දේවල් ගණනාවක්; කාරුණික;

මේ ආකාරයෙන්, පන්තියක් (හෝ වියුක්ත පන්තියක්) පොදු ගුණාංග (අතුරු මුහුණතක් වැනි) පමණක් නියෝජනය නොකළ යුතුය, නමුත් පොදු ලක්ෂණ සහිත යම් ආකාරයක කණ්ඩායමක්. අතුරු මුහුණතක් වර්ගයක් නියෝජනය කිරීමට අවශ්‍ය නොවේ. එය පොදු ගුණාංග නියෝජනය කළ යුතුය. මේ ආකාරයෙන්, මම සිතන්නේ පංති සහ වියුක්ත පංති බොහෝ විට එහි අංග වෙනස් නොකළ යුතු දේවල් නිරූපණය කිරීමට භාවිතා කළ හැකිය, මිනිසෙකු ක්ෂීරපායියෙකු මෙන්, එය යම් වර්ගයක් නියෝජනය කරන බැවිනි. කරුණාව බොහෝ විට වෙනස් නොවිය යුතුය.


1
ඕනෑවට වඩා දියර, එය දැනටමත් පවතින තත්වයට වඩා මිනිසුන්ට ව්‍යාකූල බවක් ඇති නොකරන්න.
ganjeii

5

කේතීකරණ දෘෂ්ටිකෝණයෙන්

වියුක්ත පංතියට ඇත්තේ වියුක්ත ක්‍රම පමණක් නම් අතුරු මුහුණතකට වියුක්ත පන්තියක් ආදේශ කළ හැකිය. එසේ නොමැතිනම් වියුක්ත පංතිය අතුරුමුහුණතට වෙනස් කිරීම යනු උරුමය සපයන කේත නැවත භාවිතා කිරීමේ හැකියාව ඔබට අහිමි වනු ඇති බවයි.

නිර්මාණ දෘෂ්ටිකෝණයෙන්

එය "යනු" සම්බන්ධතාවයක් නම් එය වියුක්ත පංතියක් ලෙස තබා ගන්න, ඔබට උප කුලකයක් හෝ සියලු ක්‍රියාකාරීත්වය අවශ්‍ය වේ. එය "කළ යුතු" සම්බන්ධතාවයක් නම් එය අතුරු මුහුණතක් ලෙස තබා ගන්න.

ඔබට අවශ්‍ය දේ තීරණය කරන්න: ප්‍රතිපත්ති බලාත්මක කිරීම හෝ කේත නැවත භාවිතා කිරීමේ හැකියාව සහ ප්‍රතිපත්තිය.


3

වෙනත් වෙනස්කම් කිහිපයක්:

වියුක්ත පංතිවලට ස්ථිතික ක්‍රම, ගුණාංග, ක්ෂේත්‍ර ආදිය තිබිය හැකි අතර ක්‍රියාකරුවන්ට අතුරු මුහුණත් වලට නොහැකි ය. වාත්තු ක්‍රියාකරු වියුක්ත පන්තියට / සිට වාත්තු කිරීමට ඉඩ දෙන නමුත් අතුරු මුහුණතට / සිට වාත්තු කිරීමට ඉඩ නොදෙන්න.

එය කිසිසේත් ක්‍රියාත්මක නොවුනත් (එහි ස්ථිතික සාමාජිකයන් හරහා) ඔබට තනිවම වියුක්ත පන්තිය භාවිතා කළ හැකි අතර ඔබට කිසිම ආකාරයකින් අතුරු මුහුණත තනිවම භාවිතා කළ නොහැක.


ජාවා හි, අතුරු මුහුණතට සාමාජික විචල්‍යයක් තිබිය හැකි නමුත් පෙරනිමියෙන් ඒවා පොදු ස්ථිතික බවට පත්වේ .. එබැවින් අතුරු මුහුණතට ස්ථිතික ක්ෂේත්‍ර තිබිය හැකිය
ජිතේන්ද්‍ර විස්පුට්

ඔව් අතුරු මුහුණතට ස්ථිතික ක්ෂේත්‍ර තිබිය හැකිය. නමුත් අතුරු මුහුණතට ස්ථිතික ක්‍රම තිබිය නොහැක.
ඉගෙන ගන්නෙකු
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.