სხვაობა აბსტრაქტულ კლასსა და ინტერფეისს შორის

სხვაობა აბსტრაქტულ კლასსა და ინტერფეისს შორის
სხვაობა აბსტრაქტულ კლასსა და ინტერფეისს შორის

ვიდეო: სხვაობა აბსტრაქტულ კლასსა და ინტერფეისს შორის

ვიდეო: სხვაობა აბსტრაქტულ კლასსა და ინტერფეისს შორის
ვიდეო: Windows 10 Vs Windows 8 Vs Windows 7: What's The Difference? 2024, ივლისი
Anonim

აბსტრაქტული კლასი ინტერფეისის წინააღმდეგ

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

რა არის აბსტრაქტული კლასი?

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

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

რა არის ინტერფეისი?

ინტერფეისი არის აბსტრაქტული ტიპი, რომელიც გამოიყენება კონტრაქტის დასაზუსტებლად, რომელიც უნდა განხორციელდეს კლასების მიერ, რომლებიც ახორციელებენ ამ ინტერფეისს. ინტერფეისის საკვანძო სიტყვა გამოიყენება ინტერფეისის განსაზღვრისათვის და Implements საკვანძო სიტყვა გამოიყენება კლასის მიერ ინტერფეისის განსახორციელებლად (ჯავა პროგრამირების ენაზე). ჩვეულებრივ, ინტერფეისი შეიცავს მხოლოდ მეთოდის ხელმოწერებს და მუდმივ დეკლარაციებს. ნებისმიერი ინტერფეისი, რომელიც ახორციელებს კონკრეტულ ინტერფეისს, უნდა განახორციელოს ინტერფეისში განსაზღვრული ყველა მეთოდი, ან უნდა გამოცხადდეს აბსტრაქტულ კლასად. ჯავაში, ობიექტის მიმართვის ტიპი შეიძლება განისაზღვროს, როგორც ინტერფეისის ტიპი. მაგრამ ეს ობიექტი ან უნდა იყოს null ან უნდა შეიცავდეს კლასის ობიექტს, რომელიც ახორციელებს ამ კონკრეტულ ინტერფეისს. Java-ში Implements საკვანძო სიტყვის გამოყენებით, შეგიძლიათ რამდენიმე ინტერფეისის დანერგვა ერთ კლასში.

რა განსხვავებაა აბსტრაქტულ კლასსა და ინტერფეისს შორის?

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

გირჩევთ: