Видео: Яагаад C# хэл дээр олон өв залгамжлал боломжгүй байдаг вэ?
2024 Зохиолч: Lynn Donovan | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2023-12-15 23:50
C# үүнийг хийдэг үгүй дэмжлэг үзүүлэх олон өв залгамжлал , учир нь тэд ингэж нэмсэн олон өв залгамжлал C#-д хэт их төвөгтэй байдлыг нэмсэн боловч хэт бага ашиг тустай. C# хэл дээр ангиуд нь зөвхөн зөвшөөрсөн руу өвлөн авах ганц бие гэж нэрлэгддэг ганц бие эцэг эхийн ангиас өв залгамжлал.
Тэгвэл яагаад олон өв залгамжлалыг зөвшөөрдөггүй юм бэ?
Java дэмждэг олон өв залгамжлал зөвхөн интерфейсээр дамжуулан. Анги нь хэдэн ч интерфэйсийг хэрэгжүүлэх боломжтой боловч зөвхөн нэг ангиллыг өргөтгөх боломжтой. Олон удамшлыг дэмждэггүй Учир нь энэ нь үхлийн аюултай алмазын асуудалд хүргэдэг. Интерфейс нь танай ангийн хэрэгжүүлэх ёстой зүйлсийн гэрээ юм.
Бид C# хэл дээр олон интерфэйсийг өвлөн авч чадах уу? Интерфейсүүд ямар анги болох тухай гэрээ эсвэл "гэрээ"-тэй адил юм хийж чадна . Ангиуд чадна байна олон интерфейс , гэхдээ ангиуд боломжгүй олон удамшдаг ангиуд. Ангиуд өв залгамжлах -аас илүү нэг анги гэж нэрлэдэг олон - өв залгамжлал . C# үүнийг хийдэг зөвшөөрөгдөөгүй олон - өв залгамжлал.
Эндээс C# олон удамшлын Diamond асуудал гэж юу вэ?
" алмазын асуудал " гэдэг нь В ба С хоёр анги байхад үүсдэг хоёрдмол байдал юм өвлөн авах А, D ангиас өвлөн авдаг В ба С хоёрын аль алинаас нь. Хэрэв А-д В ба С дарж тэмдэглэсэн арга байгаа бөгөөд D үүнийг дардаггүй бол D аргын аль ангиллыг ашигладаг. өвлөн авах : В-ийнх үү, С-ийнх үү?
Жишээ нь C# хэл дээр олон удамшил гэж юу вэ?
C# зөвшөөрөхгүй олон өв залгамжлал ангиудтай боловч интерфэйс ашиглан хэрэгжүүлж болно. Үүний цаад шалтгаан нь: Олон өв залгамжлал бага ашиг тустай хэт их төвөгтэй байдлыг нэмнэ. Үндсэн ангийн гишүүдтэй зөрчилдөх магадлал маш их байна. Өв залгамжлал Интерфейстэй ижил үүрэг гүйцэтгэдэг олон өв залгамжлал.
Зөвлөмж болгож буй:
Прототип өв залгамжлал ба сонгодог өв залгамжлалын хооронд ямар ялгаа байдаг вэ?
Тиймээс прототип бол ерөнхий ойлголт юм. Сонгодог өв залгамжлал ба прототип удамшлын хоорондох ялгаа нь сонгодог удамшил нь бусад ангиллаас удамшсан ангиудад хязгаарлагддаг бол прототип өв залгамжлал нь объект холбох механизмыг ашиглан аливаа объектыг клончлохыг дэмждэг
Яагаад C++ хэл дээр олон өв залгамжлалыг дэмждэг ч Java дээр дэмждэггүй вэ?
C++, Common lisp болон бусад цөөн хэдэн хэл нь олон өв залгамжлалыг дэмждэг бол java үүнийг дэмждэггүй. Жава нь үүнээс үүдэлтэй тодорхой бус байдлаас зайлсхийхийн тулд олон удамшлыг зөвшөөрдөггүй. Ийм асуудлын нэг жишээ бол олон удамшлын үед үүсдэг алмазын асуудал юм
Испани хэл дээр H яагаад чимээгүй байдаг вэ?
Испани хэлний эхний чимээгүй үсэг нь H үсэг юм. Энэ үсэг нь С үсгийн хажууд биш л бол үргэлж чимээгүй байдаг. Испани цагаан толгойн үсгийн H үсгийг төлөөлдөг үг нь hache юм. Энэ үг нь H үсгээр эхэлж, ch үсэгтэй тул H, ch-ийн дуудлагыг харуулах гайхалтай анхны жишээ болно
Бид яагаад жишээн дээр Java хэл дээр боодлын анги ашигладаг вэ?
Java Wrapper ангийн давуу тал Эдгээр нь анхдагч өгөгдлийн төрлүүдийг объект болгон хөрвүүлэхэд хэрэглэгддэг (Өгөгдсөн аргад аргумент дамжуулах шаардлагатай үед объектууд хэрэгтэй болно). util нь зөвхөн объекттой харьцдаг ангиудыг агуулдаг тул энэ тохиолдолд ч бас тусалдаг. Өгөгдлийн бүтэц нь зөвхөн объект болон анхдагч өгөгдлийн төрлүүдийг хадгалдаг
Жава хэл дээр олон удамшил яагаад дэмжигдээгүйг жишээгээр тайлбарлана уу?
Олон өв залгамжлал байхгүй тул Java-д энэ нь хэзээ ч тохиолдохгүй. Энд хоёр интерфейс ижил аргатай байсан ч хэрэгжүүлэгч анги нь зөвхөн нэг аргатай байх бөгөөд үүнийг хэрэгжүүлэгч хийх болно. Ангиудын динамик ачаалал нь олон өв залгамжлалыг хэрэгжүүлэхэд хүндрэл учруулдаг