გადატვირთული მეთოდები არის მეთოდები იმავე კლასში, რომლებიც იზიარებენ ერთსა და იმავე სახელს, მაგრამ იღებენ სხვადასხვა ცვლადის ტიპებს არგუმენტებად. მაგალითად, კლასი შეიძლება შეიცავდეს ორ განსხვავებულ "დამატების" მეთოდს: ერთი, რომელიც იღებს ორ ორმაგ მნიშვნელობას, "add (double a, double b)" და ერთი, რომელიც იღებს ორს. მთელი მნიშვნელობები, "add (int a, int b)." კომპიუტერი ავტომატურად წყვეტს, რომელი მეთოდი გამოიძახოს გაშვების დროს, ცვლადის ტიპების მიხედვით, რომლებიც გადაეცემა მას მეთოდი.
მოქნილობა
გადატვირთული მეთოდები პროგრამისტებს აძლევს მოქნილობას, გამოიძახონ მსგავსი მეთოდი სხვადასხვა ტიპის მონაცემებისთვის. თუ თქვენ მუშაობთ მათემატიკურ პროგრამაზე, მაგალითად, შეგიძლიათ გამოიყენოთ გადატვირთვა რამდენიმე "გამრავლების" კლასის შესაქმნელად. რომელთაგან თითოეული ამრავლებს ტიპის არგუმენტების სხვადასხვა რაოდენობას: უმარტივესი "გამრავლება (int a, int b)" ამრავლებს ორს. მთელი რიცხვები; უფრო რთული მეთოდი "გამრავლება (ორმაგი a, int b, int c)" ამრავლებს ერთ ორჯერ ორ მთელ რიცხვზე -- შეგიძლიათ მაშინ მოვუწოდებთ "გამრავლებას" ცვლადების ნებისმიერ კომბინაციას, რომლისთვისაც თქვენ შექმენით გადატვირთული მეთოდი და მიიღეთ შესაბამისი შედეგი.
დღის ვიდეო
კონსტრუქტორები
გადატვირთვა ასევე გამოიყენება კონსტრუქტორებზე, რათა შექმნან ახალი ობიექტები სხვადასხვა რაოდენობის მონაცემებით. მაგალითად, შეგიძლიათ გამოიყენოთ გადატვირთვა, რათა შექმნათ სამი განსხვავებული კონსტრუქტორი "სახლის" ობიექტისთვის სახლის ნომრით, ქუჩის სახელით და ფერის ცვლადებით. უმარტივესი კონსტრუქტორი "House()" არ იღებს არგუმენტებს და ქმნის სახლს ნაგულისხმევი ან ცარიელი ცვლადებით. უფრო რთული კონსტრუქტორი, "House (int houseNumber, String streetName)" ქმნის სახლს მითითებული სახლის ნომრით და ქუჩის სახელით, მაგრამ ნაგულისხმევი ან ცარიელი ფერით. ყველაზე რთული კონსტრუქტორი, "House (int houseNumber, String streetName, String color)" ქმნის სახლს ყველა მითითებული ინფორმაციით და არაფერს ტოვებს ნაგულისხმევად. შემდეგ შეგიძლიათ შექმნათ სახლის ობიექტი ამჟამად ხელმისაწვდომი ინფორმაციის საფუძველზე, მიუწვდომელი ინფორმაცია ცარიელი ან ნაგულისხმევად დატოვებული.
ორაზროვანი ცნობები
გადატვირთული მეთოდებმა უნდა გამოიყენონ სხვადასხვა რიცხვები ან ტიპის არგუმენტები, რათა თავიდან იქნას აცილებული გაურკვევლობა. თუ თქვენ შექმნით ორ მეთოდს იმავე კლასში, რომლებსაც აქვთ იგივე სახელი და მიიღებთ ორ მთელ რიცხვს არგუმენტებად, ჯავის შემდგენელი ვერ შეძლებს ამ ორის გარჩევას, მაშინაც კი, თუ შეყვანის ცვლადებს განსხვავებული სახელები აქვთ. მაგალითად, მეთოდი "add (int a, int b)" არ შეიძლება არსებობდეს იმავე კლასში, როგორც მეთოდი "add (int c, int d)."
დაბრუნების ტიპები
თქვენ უნდა განსაზღვროთ დაბრუნების ტიპი თითოეული გადატვირთული მეთოდისთვის. მეთოდებს შეიძლება ჰქონდეთ დაბრუნების სხვადასხვა ტიპი -- მაგალითად, "add (int a, int b)" შეიძლება დააბრუნოს მთელი რიცხვი, ხოლო "add (double a, double b)" აბრუნებს ორმაგს. ამასთან, ჯავას არ შეუძლია განასხვავოს ორი განსხვავებული მეთოდი, მათი დაბრუნების ტიპის მიხედვით. ამიტომ, "int multiply (double a, double b)" არ შეიძლება არსებობდეს იმავე კლასში, როგორც "double multiply (double a, double b)."