სხვაობა გადაფარვასა და გადატვირთვას შორის

სხვაობა გადაფარვასა და გადატვირთვას შორის
სხვაობა გადაფარვასა და გადატვირთვას შორის

ვიდეო: სხვაობა გადაფარვასა და გადატვირთვას შორის

ვიდეო: სხვაობა გადაფარვასა და გადატვირთვას შორის
ვიდეო: CDI და TDI ტურბო დიზელის ძრავებს შორის სხვაობა 2024, ივლისი
Anonim

გადატვირთვა vs გადატვირთვა

მეთოდი Overriding და მეთოდი Overloading არის ორი ცნება/ტექნიკა/მახასიათებელი, რომელიც გვხვდება პროგრამირების ზოგიერთ ენაში. ორივე კონცეფცია საშუალებას აძლევს პროგრამისტს უზრუნველყოს სხვადასხვა იმპლემენტაცია იგივე სახელწოდების მეთოდებისთვის. მეთოდის გადაფარვა საშუალებას აძლევს პროგრამისტს უზრუნველყოს ალტერნატიული იმპლემენტაცია ქვეკლასში იმ მეთოდისთვის, რომელიც უკვე განსაზღვრულია მისი სუპერ კლასის შიგნით. მეთოდის გადატვირთვა საშუალებას აძლევს პროგრამისტს უზრუნველყოს სხვადასხვა იმპლემენტაცია მრავალი მეთოდისთვის ერთი და იგივე სახელით (იგივე კლასის ფარგლებში).

რა არის უზენაესი?

როგორც ზემოთ აღინიშნა, კლასს შეუძლია გააფართოვოს სუპერ კლასი ან მშობელი კლასი ობიექტზე ორიენტირებულ პროგრამირების ენებზე.შვილობილ კლასს შეიძლება ჰქონდეს საკუთარი მეთოდები ან სურვილისამებრ ჰქონდეს საკუთარი იმპლემენტაციები მეთოდებზე, რომლებიც უკვე განსაზღვრულია მის მშობელ კლასში (ან მის ერთ-ერთ მთავარ კლასში). ასე რომ, როდესაც ეს უკანასკნელი ხდება, მას ეწოდება მეთოდის გადაჭარბება. სხვა სიტყვებით რომ ვთქვათ, თუ ბავშვის კლასი უზრუნველყოფს მეთოდის განხორციელებას იგივე ხელმოწერით და დაბრუნების ტიპით, როგორც მეთოდი უკვე განსაზღვრული მის ერთ-ერთ მშობელ კლასში, ეს მეთოდი ითვლება გადაფარდებულად (ჩანაცვლებულად) ბავშვის კლასის განხორციელებით.. ასე რომ, თუ კლასში არის გადაჭარბებული მეთოდი, Runtime სისტემამ უნდა გადაწყვიტოს რომელი მეთოდის განხორციელება იქნება გამოყენებული. ეს საკითხი მოგვარებულია ობიექტის ზუსტი ტიპის დათვალიერებით, რომელიც გამოიყენება მის გამოსაძახებლად. თუ მშობელი კლასის ობიექტი გამოიყენება გადატვირთული მეთოდის გამოსაძახებლად, მაშინ გამოიყენება იმპლემენტაცია მშობელ კლასში. ანალოგიურად, თუ ეს არის ბავშვის კლასის ობიექტი, რომელიც გამოიყენება, მაშინ გამოიყენება ბავშვის კლასის იმპლემენტაცია. თანამედროვე პროგრამირების ენები, როგორიცაა Java, Eiffel, C++ და Python, საშუალებას იძლევა მეთოდის გადაჭარბება.

რა არის გადატვირთვა?

მეთოდის გადატვირთვა არის ფუნქცია, რომელსაც უზრუნველყოფს ზოგიერთი პროგრამირების ენა, რათა შეიქმნას ერთზე მეტი მეთოდი ერთი და იგივე სახელით, მაგრამ სხვადასხვა შეყვანისა და გამომავალი ტიპებით. თანამედროვე პროგრამირების ენებში, როგორიცაა Java, C, C++ და VB. NET, ეს ფუნქცია ხელმისაწვდომია. თქვენ შეგიძლიათ გადატვირთოთ მეთოდი სხვა მეთოდის შექმნით იმავე სახელით, მაგრამ განსხვავებული მეთოდის ხელმოწერით ან დაბრუნების სხვა ტიპის (ან ორივე ერთად). მაგალითად, თუ თქვენ გაქვთ მეთოდი1 (ტიპი1 t1) და მეთოდი1 (ტიპი2 t2) იმავე კლასში, მაშინ ისინი გადატვირთულია. შემდეგ სისტემამ უნდა გადაწყვიტოს რომელი უნდა შესრულდეს, როდესაც ის გამოიძახება. ეს დიფერენციაცია ხდება მეთოდისთვის გადაცემული პარამეტრი(ებ)ის ტიპის დათვალიერებით. თუ არგუმენტი არის ტიპის 1, მაშინ გამოიძახება პირველი იმპლემენტაცია, ხოლო თუ ის არის ტიპის 2, მაშინ მეორე განხორციელება ეწოდება.

რა განსხვავებაა გადატვირთვასა და გადატვირთვას შორის?

მიუხედავად იმისა, რომ მეთოდის გადაჭარბება და მეთოდის გადატვირთვა გამოიყენება სხვადასხვა განხორციელების მეთოდის უზრუნველსაყოფად, ამ ორ კონცეფციას/ტექნიკას შორის არის ძირითადი განსხვავებები.უპირველეს ყოვლისა, მეთოდის გადატვირთვის საგნები ყოველთვის რჩებიან სხვადასხვა კლასებში, ხოლო მეთოდის გადატვირთვის საგნები რჩებიან იმავე კლასში. ეს ნიშნავს, რომ გადატვირთვა შესაძლებელია მხოლოდ ობიექტზე ორიენტირებულ პროგრამირების ენებში, რომლებიც მემკვიდრეობის საშუალებას იძლევა, ხოლო გადატვირთვა შეიძლება ხელმისაწვდომი იყოს არა ობიექტზე ორიენტირებულ ენაზეც. სხვა სიტყვებით რომ ვთქვათ, თქვენ უგულებელყოფთ მეთოდს სუპერ კლასში, მაგრამ გადატვირთავთ მეთოდს თქვენს კლასში.

კიდევ ერთი განსხვავება ისაა, რომ გადაფარულ მეთოდებს აქვთ ერთი და იგივე მეთოდის სახელი, მეთოდის ხელმოწერა და დაბრუნების ტიპი, მაგრამ გადატვირთული მეთოდები უნდა განსხვავდებოდეს ხელმოწერის ან დაბრუნების ტიპის მიხედვით (სახელი უნდა იყოს იგივე). ორი გადატვირთული მეთოდის დიფერენცირების მიზნით, ობიექტის ზუსტი ტიპი, რომელიც გამოიყენება გამოყენებული მეთოდების id გამოსაძახებლად, ხოლო ორ გადატვირთულ მეთოდს შორის დიფერენცირებისთვის გამოიყენება პარამეტრების ტიპები. კიდევ ერთი მთავარი განსხვავება ისაა, რომ გადატვირთვა წყდება კომპილაციის დროს, ხოლო გადატვირთვა წყდება გაშვების დროს.

გირჩევთ: