Overloaded är metoder i samma klass som har samma namn , men acceptera olika rörliga typer som argument . Till exempel kan en klass innehåller två olika "add" metoder : en som accepterar två dubbla värden , " lägga ( dubbla a , dubbel b ) , " och en som accepterar två heltalsvärden , " add ( int a , iNT B ) . " datorn bestämmer automatiskt vilken metod som ska ringa vid run -time bygger på de rörliga typerna som skickas till metoden . Flexibilitet
Overloaded metoder ger programmerare möjlighet att ringa en liknande metod för olika typer av data. Om du arbetar på en matematik -program , till exempel , kan du använda överbelastning för att skapa flera " förökar " klasser , vilka var och multiplicerar ett annat antal typer av argument : det enklaste " multiplicera ( int a , int b ) " ; multiplicerar två heltal , desto mer komplicerad metod " multiplicera ( dubbla a , int b , int c ) " multiplicerar en dubbel med två heltal - du kan sedan ringa " multiplicera " på valfri kombination av variabler som du skapade en överbelastad metod för och får rätt resultat .
Constructors
Överbelastning används också på konstruktörer för att skapa nya objekt ges olika mängder data . Till exempel kan du använda överbelastning för att skapa tre olika konstruktörer för ett " hus " objekt med ett husnummer , gatunamn och variabler färg . Den enklaste Konstruktorn " House ( ) " tar inga argument och skapar ett hus med standard eller tomma variabler . En mer komplex konstruktör , " House ( int Husnummer , String gatunamnet ) , " skapar ett hus med angivet husnummer och gatunamn , men en standard eller tom färg . Den mest komplicerade konstruktör , " House ( int Husnummer , String gatunamnet , String färg ) , " skapar ett hus med all den angivna informationen , så att inget som standard . Du kan sedan skapa ett hus -objekt baserat på den information som för närvarande finns tillgängliga , med de tillgängliga uppgifter som lämnas tomt eller på standard .
Tvetydiga Referenser
Overloaded metoder måste använda olika antal eller typer av argument för att undvika tvetydighet . Om du skapar två metoder i samma klass som har samma namn och acceptera två heltal som argument , kommer Java -kompilatorn inte kan skilja mellan de två , även om de ingående variablerna har olika namn . Till exempel , metoden " add ( int a , int b ) " inte kan existera i samma klass som metoden " add ( int c , int d ) . "
Return Typer
Du måste ange en returtyp för varje överbelastad metoden . Metoder kan ha olika avkastning typer - till exempel " add ( int a , int b ) " kan returnera ett heltal , medan " lägg ( dubbla a , dubbel b ) " returnerar en dubbel . Däremot kan Java inte skilja mellan två olika metoder baserade på deras returtyp . Därför , " int multiplicera ( dubbla a , dubbel b ) " inte kan existera i samma klass som " double multiplicera ( dubbla a , dubbel b ) . "