Jaký je rozdíl mezi přetížením metody a přepsáním?



Tento článek popisuje klíčové rozdíly mezi přetížením metody a přepsáním v Javě různými příklady včetně super klíčového slova a různých pravidel.

Programovací jazyk Java je nejlepší volbou, pokud jde o . S pojmy jako třídy , , atd., je velmi snadné s ním pracovat . Snadný přístup a snadná syntaxe činí kód efektivním a méně složitým. V tomto článku se dozvíme o přetížení a přepsání metod v Javě. Níže jsou diskutována témata v tomto blogu:

Co je přetížení metody v Javě?

Přetížení metody umožňuje, aby metoda měla stejný název, který se liší na základě argumentů nebo typů argumentů. Může to souviset s polymorfismem v době kompilace. Následuje několik ukazatelů, které musíme mít na paměti při přetížení metod v Javě.





  • Nemůžeme přetížit návratový typ.

  • I když můžeme přetížit , argumenty nebo vstupní parametry se musí lišit.



  • Nemůžeme přetížit dvě metody, pokud se liší pouze statickým klíčovým slovem.

  • Stejně jako ostatní statické metody může být metoda main () také přetížena.

přetížení metody - přetížení a přepsání metody v java-edureka



Podívejme se na jednoduchý program, abychom pochopili, jak v Pythonu funguje přetížení metody.

public class Div {public int div (int a, int b) {return (a / b)} public int div (int a, int b, int c) {return ((a + b) / c)} public static void main (String args []) {Div ob = new Div () ob.div (10, 2) ob.div (10, 2, 3)}}
 Výstup: 5 4

Ve výše uvedeném programu máme dvě metody se stejným názvem, ale různými parametry. Takto funguje přetížení metody .

Proč přetížení metody?

Hlavní výhodou použití přetížení metody v Javě je to, že nám dává svobodu nedefinovat funkci znovu a znovu pro provádění stejné věci. V níže uvedeném příkladu tyto dvě metody v podstatě provádějí dělení, takže můžeme mít různé metody se stejným názvem, ale s různými parametry. Pomáhá také při kompilaci polymorfismu.

Přetížení metody main ():

Následuje příklad přetížení metody main () v Javě.

public class Edureka {public static void main (String [] args) {System.out.println ('hello') Edureka.main ('edurekan')} public static void main (String arg1) {System.out.println (' welcome '+ arg1) Edureka.main (' welcome ',' to edureka ')} public static void main (String arg1, String arg2) {System.out.println (' hello ', + arg1, + arg2)}}
 Výstup: ahoj vítejte edurekan ahoj, vítejte v edureka

Příklady přetížení metody

  • Program na přetížení statických metod v Javě.
public class Test {public static int func (int a) {return 100} public static char func (int a, int b) {return 'edureka'} public static void main (String args []) {System.out.println ( func (1)) System.out.println (func (1,3))}}
 Výstup: 100 edureka
  • Program na přetížení tří metod se stejným názvem.
public class Add {public int add (int a, int b) {return (a + b)} public int add (int a, int b, int c) {return (a + b + c)} public double add (double a, double b) {return (a + b)} public static void main (String args []) {Add ob = new Add () ob.add (15,25) ob.add (15,25,35) ob .add (11.5, 22.5)}}
 Výstup: 40 75 34

Co je přepsání metody v Javě?

Dědičnost v Javě zahrnuje vztah mezi třídami rodičů a dětí. Kdykoli obě třídy obsahují metody se stejným názvem a argumenty nebo parametry, je jisté, že jedna z metod během provádění přepíše jinou metodu. Metoda, která bude provedena, závisí na objektu.

Pokud objekt podřízené třídy volá metodu, metoda podřízené třídy přepíše metodu nadřazené třídy. V opačném případě, pokud objekt nadřazené třídy zavolá metodu, bude provedena metoda nadřazené třídy.

Přepsání metody také pomáhá při implementaci runtime polymorfismu v Javě. Uveďme si jednoduchý příklad, abychom pochopili, jak přepsání metod funguje v Javě.

java k moci
class Parent {void view () {System.out.println ('this is a parent class method)}} class Child extends Parent {void view () {System.out.println (' this is a child class method)}} public static void main (String args []) {Parent ob = new Parent () ob.view () Parent ob1 = new Child () ob1.view ()
 Výstup: toto je metoda dětské třídy

Pravidla pro přepsání metody

  • The přístup k úpravám může povolit pouze větší přístup pro přepsanou metodu.

  • NA finále metoda nepodporuje přepsání metody.

  • Statickou metodu nelze přepsat.

  • Soukromé metody nelze přepsat.

  • Návratový typ přepisovací metody musí být stejný.

  • Můžeme volat metodu nadřazené třídy v převažující metodě pomocí super klíčového slova.

  • NA stavitel nelze přepsat, protože podřízená třída a nadřazená třída nemohou mít konstruktor se stejným názvem.

Příklad přepsání metody

  • Program zobrazující přepsání pomocí super klíčového slova
třída Rodič {void show () {System.out.println ('metoda rodičovské třídy')} třída Dítě rozšiřuje Rodič {void show () {super.show () System.out.println ('metoda dětské třídy')} veřejná static void main (String args []) {Parent ob = new Child () ob.show ()}}
 Výstup: metoda mateřské třídy metoda dětské třídy

Přetížení vs. přepsání: Rozdíl mezi přetížením metody a přepsáním metody

Následují klíčové rozdíly mezi přetížením metody a přepsáním v Javě.

Přetížení metody Přepsání metody
  • Používá se ke zvýšení čitelnosti programu
  • Poskytuje konkrétní implementaci metody již v nadřazené třídě
  • Provádí se ve stejné třídě
  • Zahrnuje více tříd
  • V případě přetížení musí být parametry odlišné
  • V případě přepsání musí být parametry stejné
  • Je příkladem polymorfismu v době kompilace
  • Je to příklad běhového polymorfismu
  • Typ návratu se může lišit, ale musíte také změnit parametry.
  • Typ návratu musí být při přepsání stejný
  • Mohou být přetíženy statické metody
  • Přepsání nezahrnuje statické metody.

V tomto blogu jsme podrobně diskutovali přetížení metody a přepsání metody. Díky zapojení tříd, objektů a konceptů, jako je dědičnost a polymorfismus, se stává docela důležité získat jasnou představu o tom, co to znamená přetížení nebo přepsání metod v Javě.

Programovací jazyk Java je vrcholem v objektově orientovaném programování a obsahuje mnoho aplikací. S poptávkou a popularitou musí aspirující vývojář java ovládat základní koncepty programovacího jazyka. Zaregistrujte se k Edurece nastartovat učení.

Máte na nás dotaz? uveďte to prosím v sekci komentářů v tomto článku o „přetížení metody vs. přepsání metody v javě“ a my se vám ozveme co nejdříve.