Sobes.tech
Middle

Mis on pärandum ja polümorfism seoses viidetüüpidega?

sobes.tech AI

Vastus AI-lt

Pärilususüsteem — see on mehhanism, mis võimaldab luua uue klassi (päriliku, lapse), mis pärib olemasoleva klassi (põhi-, vanem) väljad ja meetodid. See soodustab koodi korduvkasutust ja klassihierarhiate loomist.

Polümorfism — see on võimalus erinevatel klassidel olevatel objektidel käituda ühtemoodi või omada erinevat käitumist sama meetodi väljakutsumisel. On kaht peamist tüüpi: statiline (meetodite ülekoormus) ja dünaamiline (meetodite ülekirjutamine).

Seoses viidetüüpidega võimaldab pärilusus luua põhiklassi muutuja, mis võib viidata päriliku klassi objekti. Polümorfism avaldub selles, et meetodi väljakutsumisel selle muutuja kaudu täidetakse tegeliku objekti tüübi versioon, mitte viidetüübi (dünaamiline polümorfism).

Java näide:

// Põhiklass
class Animal {
    public void makeSound() {
        System.out.println("Hääl väljastab");
    }
}

// Pärilik klass 1
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Haug-haug");
    }
}

// Pärilik klass 2
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Mia-mia");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Muutuja tüüp Animal viitab Dog objektile
        Animal myCat = new Cat(); // Muutuja tüüp Animal viitab Cat objektile

        myDog.makeSound(); // Kutsub välja Dog meetodi (poliomorfism)
        myCat.makeSound(); // Kutsub välja Cat meetodi (poliomorfism)
    }
}

Selles näites on myDog ja myCat viiteliigid Animal, kuid polümorfismi tõttu, kui kutsutakse makeSound(), täidetakse vastav Dog ja Cat realiseerimine.