Sobes.tech
Middle
302

Kā īstenot daudzveidīgu mantošanu Java?

Atbilde no AI

sobes.tech AI

Java klasēs tiešā realizācijas daudzmantošana nav tieši atbalstīta "romba problēmas" dēļ. Tomēr tās funkcionalitāti var sasniegt ar šādiem veidiem:

  1. Saskarnes: Klase var realizēt vairākas saskarnes. Saskarnes definē tikai metožu parakstus, ne to realizāciju.

    interface InterfaceA {
        void methodA();
    }
    
    interface InterfaceB {
        void methodB();
    }
    
    class MyClass implements InterfaceA, InterfaceB {
        @Override
        public void methodA() {
            // methodA realizācija
        }
    
        @Override
        public void methodB() {
            // methodB realizācija
        }
    }
    

    Java 8 ieviešanas laikā, kad parādījās noklusējuma metodes, saskarnes var arī nodrošināt noklusējuma realizācijas.

    interface InterfaceC {
        default void defaultMethod() {
            System.out.println("Noklusējuma realizācija");
        }
    }
    
    class MyClass2 implements InterfaceC {
        // var izmantot defaultMethod vai pārdefinēt
    }
    
  2. Kompozīcija: Tā vietā, lai mantošanas no vairākām klasēm, klase var saturēt citu klases instancijas (locekļus).

    class ComponentA {
        void methodA() {
            // methodA realizācija
        }
    }
    
    class ComponentB {
        void methodB() {
            // methodB realizācija
        }
    }
    
    class MyClass3 {
        private ComponentA compA = new ComponentA();
        private ComponentB compB = new ComponentB();
    
        public void delegateMethodA() {
            compA.methodA();
        }
    
        public void delegateMethodB() {
            compB.methodB();
        }
    }
    

    Klase MyClass3 deleģē metožu izsaukumus objektiem compA un compB.

Salīdzinājums:

Mehānisms Realizācijas mantošana Romba problēma Elastīgums
Saskarnes Nav (pirms default) Nav Augsts
Kompozīcija Nav