Video: Nima uchun C# da bir nechta meros qilib olish mumkin emas?
2024 Muallif: Lynn Donovan | [email protected]. Oxirgi o'zgartirilgan: 2023-12-15 23:54
C# qiladi emas qo'llab-quvvatlash ko'p meros , chunki ular bu qo'shimchani asoslashdi ko'p meros juda kam foyda keltirgan holda C# ga juda ko'p murakkablik qo'shdi. C# da sinflar faqat ruxsat berilgan uchun meros bitta ota-ona sinfidan, yakka deb ataladi meros olish.
Shunday ekan, nega bir nechta merosga ruxsat berilmaydi?
Java qo'llab-quvvatlaydi ko'p meros faqat interfeyslar orqali. Sinf istalgan sonli interfeyslarni amalga oshirishi mumkin, lekin faqat bitta sinfni kengaytirishi mumkin. Bir nechta meros qo'llab-quvvatlanmaydi chunki bu halokatli olmos muammosiga olib keladi. Interfeys - bu sizning sinfingiz amalga oshirishi kerak bo'lgan narsalar shartnomasi.
Bundan tashqari, biz C# da bir nechta interfeyslarni meros qilib olamizmi? Interfeyslar qanday sinfga tegishli shartnomalar yoki "shartnomalar" ga o'xshaydi qila olmoq . Sinflar mumkin bor bir nechta interfeyslar , lekin sinflar mumkin emas bir nechta meros oladi sinflar. Sinflar meros olish dan ortiq bitta sinf sifatida tanilgan bir nechta - meros olish . C# qiladi ruxsat bermaslik bir nechta - meros olish.
Bu erda bir nechta meros C# da Diamond muammosi nima?
" olmos muammosi " bu ikki sinf B va C bo'lganda paydo bo'ladigan noaniqlik meros A va D sinfidan meros oladi B va C dan. Agar A da B va C bekor qilgan va D uni bekor qilmagan usul mavjud bo'lsa, u holda usulning qaysi klassi D qiladi. meros : B niki yoki C niki?
Misol bilan C# da bir nechta meros nima?
C# ruxsat bermaydi ko'p meros sinflar bilan, lekin interfeys yordamida amalga oshirilishi mumkin. Buning sababi: Ko'p meros kam foyda bilan juda ko'p murakkablik qo'shing. Qarama-qarshi asosiy sinf a'zolarining katta imkoniyatlari mavjud. Meros olish Interfeys bilan bir xil vazifani ta'minlaydi ko'p meros.
Tavsiya:
Nima uchun C++ da bir nechta meros qo'llab-quvvatlanadi, lekin Java-da emas?
C++, Common lisp va boshqa bir nechta tillar bir nechta merosni qo'llab-quvvatlaydi, java uni qo'llab-quvvatlamaydi. Java ko'p merosxo'rlikdan kelib chiqadigan noaniqlikdan qochishga ruxsat bermaydi. Bunday muammoning misollaridan biri - ko'p merosxo'rlikda yuzaga keladigan olmos muammosi
Har qanday sinf Java-ni nechta sinfga meros qilib olishi mumkin?
Agar bitta sinf bir nechta sinflarni kengaytirsa, bu bir nechta meros deb ataladi. Masalan: C klassi A va B sinflarini kengaytiradi, keyin bu turdagi meros ko'p meros sifatida tanilgan. Java bir nechta merosga ruxsat bermaydi
Ma'lumotlarni qazib olish nima va nima ma'lumotlarni qazib olish emas?
Ma'lumotni qazib olish oldindan o'ylab topilgan gipotezasiz amalga oshiriladi, shuning uchun ma'lumotlardan olingan ma'lumotlar tashkilotning aniq savollariga javob bermaydi. Ma'lumotni qazib olish emas: Ma'lumotni qazib olish maqsadi ma'lumotlarning o'zi emas, balki katta hajmdagi ma'lumotlardan naqsh va bilimlarni olishdir
Nima uchun Java-da bir nechta meros qo'llab-quvvatlanmaydi, misol bilan tushuntiring?
Java-da bu hech qachon sodir bo'lmaydi, chunki bir nechta meros yo'q. Bu erda ikkita interfeys bir xil usulga ega bo'lsa ham, amalga oshiruvchi sinf faqat bitta usulga ega bo'ladi va bu ham amalga oshiruvchi tomonidan amalga oshiriladi. Sinflarning dinamik yuklanishi bir nechta merosni amalga oshirishni qiyinlashtiradi
CSS-ni meros qilib olish nima?
Inherit CSS kalit so'zi u ko'rsatilgan elementni asosiy elementdan xususiyatning hisoblangan qiymatini olishiga olib keladi. U har qanday CSS xususiyatiga, shu jumladan CSS stenografiyasiga ham qo'llanilishi mumkin. Meroslangan xususiyatlar uchun bu standart xatti-harakatni kuchaytiradi va faqat boshqa qoidani bekor qilish uchun kerak bo'ladi