Middle
301
Java'da ko'p meroslikni qanday amalga oshirish mumkin?
AIdan javob
sobes.tech AI
Java'da sinflarni amalga oshirish merosxo'rligi to'g'ridan-to'g'ri qo'llab-quvvatlanmaydi, chunki "olma muammosi" mavjud. Biroq, uning funksionalligini quyidagi usullar bilan erishish mumkin:
-
Interfeyslar: Sinf bir nechta interfeyslarni amalga oshirishi mumkin. Interfeyslar faqat metodlarning imzolarini belgilaydi, ularning implementatsiyasini emas.
interface InterfaceA { void methodA(); } interface InterfaceB { void methodB(); } class MyClass implements InterfaceA, InterfaceB { @Override public void methodA() { // methodA ning implementatsiyasi } @Override public void methodB() { // methodB ning implementatsiyasi } }Java 8 da default metodlar paydo bo'lish bilan, interfeyslar ham default implementatsiyalarni taqdim etishi mumkin.
interface InterfaceC { default void defaultMethod() { System.out.println("Default implementatsiya"); } } class MyClass2 implements InterfaceC { // defaultMethod ni ishlatishi yoki uni qayta yozishi mumkin } -
Kompozitsiya: Bir nechta sinfdan meros olish o'rniga, sinf boshqa sinflarning instansiyalarini o'z ichiga olishi mumkin (a'zolar).
class ComponentA { void methodA() { // methodA ning implementatsiyasi } } class ComponentB { void methodB() { // methodB ning implementatsiyasi } } class MyClass3 { private ComponentA compA = new ComponentA(); private ComponentB compB = new ComponentB(); public void delegateMethodA() { compA.methodA(); } public void delegateMethodB() { compB.methodB(); } }MyClass3sinfi metod chaqiriqlarinicompAvacompBob'ektlariga delegat qiladi.
Taqqoslash:
| Mexanizm | Implementatsiya merosxo'rligi | Olma muammosi | Moslashuvchanlik |
|---|---|---|---|
| Interfeyslar | Yo'q (defaultgacha) | Yo'q | Yuqori |
| Kompozitsiya | Ha | Yo'q | Yuqori |