Prevladavanje nad Preopterećenjem
Metoda Nadjačavanje i metoda Preopterećenje dva su koncepta / tehnike / značajke koje se nalaze u nekim programskim jezicima. Oba koncepta omogućuju programeru pružiti različite implementacije za metode istog naziva. Poništavanje metoda omogućava programeru alternativnu implementaciju unutar podklase metodi koja je već definirana unutar njegove super klase. Preopterećenje metoda omogućuje programeru pružanje različitih implementacija za više metoda s istim nazivom (unutar iste klase).
Što je prevladavanje?
Kao što je gore spomenuto, klasa može proširiti super klasu ili roditeljsku klasu, u objektno orijentiranim programskim jezicima. Podređena klasa može imati vlastite metode ili, po želji, može imati vlastite implementacije u metode već definirane u svojoj roditeljskoj klasi (ili jednoj od svojih velikih roditeljskih klasa). Pa kad se potonje dogodi, to se naziva prevladavanjem metoda. Drugim riječima, ako podređena klasa daje provedbu metodi s istim tipom potpisa i povratka kao metoda koja je već definirana u jednoj od njegovih roditeljskih klasa, kaže se da će se ova metoda nadjačati (zamijeniti) implementacijom podređene klase , Dakle, ako u klasi postoji prevladana metoda, runtime sustav će morati odlučiti koja će se metoda primijeniti. Taj se problem rješava uvidom u točnu vrstu objekta koji se koristi za njegovo pozivanje. Ako se objekt nadređene klase koristi za pozivanje prepisane metode, tada se koristi implementacija u roditeljskoj klasi. Slično tome, ako se radi o predmetu dječje klase koji se koristi, tada se koristi i implementacija dječje klase. Moderni programski jezici poput Java, Eifell, C ++ i Python omogućuju preglasavanje metoda.
Što je preopterećenje?
Preopterećenje metoda je značajka koju pružaju neki programski jezici za stvaranje više metoda s istim nazivom, ali s različitim vrstama ulaza i izlaza. U modernim programskim jezicima kao što su Java, C #, C ++ i VB.NET, ova je značajka dostupna. Možete preopteretiti metodu izradom druge metode s istim nazivom, ali s drugačijim potpisom metode ili drugom vrstom povratka (ili oboje). Na primjer, ako imate method1 (type1 t1) i method1 (type2 t2) unutar iste klase, onda su oni preopterećeni. Tada će sustav morati odlučiti koji će se izvršiti kad se pozove. Ovo razlikovanje provodi se pogledom na vrstu parametara koji su proslijeđeni metodi. Ako je argument tipa 1, tada se poziva prva implementacija, dok je ako je tipa 2, onda se zove druga implementacija.
Koja je razlika između prevladavanja i preopterećenja?
Iako se prevladavanje metoda i preopterećenje metoda koriste kako bi se osigurala metoda s različitim implementacijama, postoje ključne razlike između ova dva koncepta / tehnike. Prije svega, ispitanici metode nadvladavanja uvijek ostaju unutar različitih klasa, dok subjekti preopterećenja metode ostaju unutar iste klase. To znači da je preglasavanje moguće samo u objektno programskim jezicima koji omogućuje nasljeđivanje, dok je preopterećenje dostupno i na objektivno usmjerenom jeziku. Drugim riječima, prevladavate metodu u super klasi, ali preopterećujete metodu unutar vlastite klase.
Još jedna razlika je da poništene metode imaju isti naziv metode, potpis metode i vrstu povratka, ali preopterećene metode moraju se razlikovati ili u potpisu ili u povratnoj vrsti (naziv bi trebao biti isti). Kako bi se razlikovale dvije prebrojane metode, koristi se točan tip objekta koji se poziva na pozivanje korištenih metoda id, dok se za razliku između dvije preopterećene metode koriste vrste parametara. Još jedna ključna razlika je da se preopterećenje rješava u vrijeme sastavljanja, dok se prevrtanje rješava u vrijeme izvođenja.