აბსტრაქტული კლასი vs მემკვიდრეობა
აბსტრაქტული კლასი და მემკვიდრეობა არის ორი მნიშვნელოვანი ობიექტზე ორიენტირებული კონცეფცია, რომელიც გვხვდება ბევრ ობიექტზე ორიენტირებულ პროგრამირების ენაში, როგორიცაა Java. აბსტრაქტული კლასი შეიძლება ჩაითვალოს ჩვეულებრივი (კონკრეტული) კლასის აბსტრაქტულ ვერსიად, ხოლო მემკვიდრეობა ახალ კლასებს საშუალებას აძლევს გააფართოვონ სხვა კლასები. აბსტრაქტული კლასი არის კლასი, რომლის ინიციალიზაცია შეუძლებელია, მაგრამ შეიძლება გაფართოვდეს. ასე რომ, აბსტრაქტული კლასები მხოლოდ მაშინ არის მნიშვნელოვანი, თუ პროგრამირების ენა მხარს უჭერს მემკვიდრეობას. ჯავაში Abstract კლასები გამოცხადებულია Abstract საკვანძო სიტყვის გამოყენებით, ხოლო Extends საკვანძო სიტყვა გამოიყენება (სუპერ) კლასიდან მემკვიდრეობით.
რა არის აბსტრაქტული კლასი?
როგორც წესი, აბსტრაქტული კლასები, რომლებიც ასევე ცნობილია როგორც აბსტრაქტული საბაზისო კლასები (ABC), არ შეიძლება განხორციელდეს (ამ კლასის ინსტანცია შეუძლებელია). ასე რომ, აბსტრაქტული კლასების არსებობა მხოლოდ მაშინ არის მნიშვნელოვანი, თუ პროგრამირების ენა მხარს უჭერს მემკვიდრეობას (კლასის გაფართოებისგან ქვეკლასების შექმნის შესაძლებლობა). აბსტრაქტული კლასები, როგორც წესი, წარმოადგენენ აბსტრაქტულ კონცეფციას ან ერთეულს ნაწილობრივი ან არ განხორციელებით. მაშასადამე, აბსტრაქტული კლასები მოქმედებენ როგორც მშობელი კლასები, საიდანაც წარმოიქმნება ბავშვის კლასები ისე, რომ ბავშვის კლასი იზიარებს მშობლის კლასის არასრულ მახასიათებლებს და შეიძლება დაემატოს ფუნქციები მათ დასასრულებლად.
აბსტრაქტული კლასები შეიძლება შეიცავდეს აბსტრაქტულ მეთოდებს. აბსტრაქტული კლასის გაფართოებულმა ქვეკლასებმა შეიძლება განახორციელონ ეს (მემკვიდრეობითი) აბსტრაქტული მეთოდები. თუ ბავშვის კლასი ახორციელებს ყველა ასეთ აბსტრაქტულ მეთოდს, ეს არის კონკრეტული კლასი. მაგრამ თუ ეს ასე არ მოხდა, ბავშვის კლასი ასევე ხდება აბსტრაქტული კლასი. ეს ყველაფერი იმას ნიშნავს, რომ როდესაც პროგრამისტი ასახელებს კლასს, როგორც აბსტრაქტს, ის ამბობს, რომ კლასი არასრული იქნება და მას ექნება ელემენტები, რომლებიც უნდა დასრულდეს მემკვიდრეობითი ქვეკლასებით.ეს არის კარგი გზა ორ პროგრამისტს შორის კონტრაქტის შესაქმნელად, რაც ამარტივებს ამოცანებს პროგრამული უზრუნველყოფის შემუშავებაში. პროგრამისტი, რომელიც წერს კოდს მემკვიდრეობით, ზუსტად უნდა დაიცვას მეთოდის განმარტებები (მაგრამ, რა თქმა უნდა, შეიძლება ჰქონდეს საკუთარი დანერგვა).
რა არის მემკვიდრეობა?
მემკვიდრეობა არის ობიექტზე ორიენტირებული კონცეფცია, რომელიც საშუალებას აძლევს ახალ კლასებს გააფართოვონ სხვა კლასები. Extends საკვანძო სიტყვა გამოიყენება მემკვიდრეობის კონცეფციის განსახორციელებლად Java პროგრამირების ენაზე. მემკვიდრეობა არსებითად უზრუნველყოფს კოდის ხელახლა გამოყენებას, რაც საშუალებას აძლევს არსებული კლასის თვისებების და ქცევის გაფართოებას ახლად განსაზღვრული კლასის მიერ. როდესაც ახალი ქვეკლასი (ან მიღებული კლასი) აფართოებს სუპერ კლასს (ან მშობელ კლასს), ეს ქვეკლასი მემკვიდრეობით მიიღებს სუპერ კლასის ყველა ატრიბუტს და მეთოდს. ქვეკლასს შეუძლია სურვილისამებრ შეცვალოს ქცევა (მიაწოდოს მეთოდებს ახალი ან გაფართოებული ფუნქციონირება) მემკვიდრე კლასიდან. როგორც წესი, ქვეკლასს არ შეუძლია მრავალი სუპერკლასის გაფართოება (მაგ. Java-ში).ამიტომ, თქვენ არ შეგიძლიათ გამოიყენოთ ექსტენსიები მრავალჯერადი მემკვიდრეობისთვის. მრავალჯერადი მემკვიდრეობის მისაღებად, თქვენ უნდა გამოიყენოთ ინტერფეისები.
რა განსხვავებაა აბსტრაქტულ კლასსა და მემკვიდრეობას შორის?
აბსტრაქტული კლასები, როგორც წესი, წარმოადგენს აბსტრაქტულ კონცეფციას ან ერთეულს ნაწილობრივი ან არ განხორციელებით. მემკვიდრეობა საშუალებას აძლევს ახალ კლასებს გააფართოვონ სხვა კლასები. იმის გამო, რომ აბსტრაქტული კლასების ინსტანცია შეუძლებელია, თქვენ უნდა გამოიყენოთ მემკვიდრეობის კონცეფცია აბსტრაქტული კლასების გამოსაყენებლად. წინააღმდეგ შემთხვევაში, Abstract კლასს არ აქვს გამოყენება. აბსტრაქტული კლასები შეიძლება შეიცავდეს აბსტრაქტულ მეთოდებს და როდესაც კლასი გაფართოვდება, ყველა მეთოდი (აბსტრაქტული და კონკრეტული) მემკვიდრეობით მიიღება. მემკვიდრეობით კლასს შეუძლია ნებისმიერი ან ყველა მეთოდის განხორციელება. თუ ყველა Abstract მეთოდი არ არის დანერგილი, მაშინ ეს კლასი ასევე ხდება Abstract კლასი. კლასს არ შეუძლია მემკვიდრეობა მიიღოს ერთზე მეტი აბსტრაქტული კლასისგან (ეს არ არის აბსტრაქტული კლასების თავისთავად ხარისხი, არამედ მემკვიდრეობის შეზღუდვა).
დაკავშირებული პოსტები:
სხვაობა აბსტრაქტულ კლასსა და კონკრეტულ კლასს შორის
სხვაობა ვირტუალურსა და აბსტრაქტს შორის
სხვაობა აბსტრაქტულ კლასსა და ინტერფეისს შორის
სხვაობა დანერგვასა და გაფართოებას შორის
სხვაობა გრაფიკსა და ხეს შორის
შეტანილი ქვეშ: პროგრამირება მონიშნული: ABC, აბსტრაქტული, აბსტრაქტული საბაზისო კლასები, აბსტრაქტული კლასი, აბსტრაქტული კლასები, აბსტრაქტული საკვანძო სიტყვა, აბსტრაქტული მეთოდები, კონკრეტული კლასი, გაფართოებული საკვანძო სიტყვა, მემკვიდრეობა, მემკვიდრეობის კლასი, მემკვიდრეობით მიღებული კლასი, ჯავა, მრავალჯერადი მემკვიდრეობა, ობიექტზე ორიენტირებული ცნებები, რეგულარული კლასი, სუპერ კლასი
ავტორის შესახებ: Indika
ინდიკა, BSc. Eng, MSECE კომპიუტერული ინჟინერია, დოქტორი. კომპიუტერული მეცნიერება, არის ასისტენტ-პროფესორი და აქვს კვლევითი ინტერესები ბიოინფორმატიკის, გამოთვლითი ბიოლოგიის და ბიოსამედიცინო ბუნებრივი ენის დამუშავების სფეროებში.
კომენტარები
-
ჯეისონი ამბობს
2017 წლის 30 აგვისტო, 1:25 pm
გმადლობთ განსხვავებას ახსნისთვის. ჩემი ყველა კითხვა ამით მოგვარდა.
პასუხი
-
Aus ამბობს
10 მაისი, 2019, 15:04 საათზე
საუკეთესო პასუხი ინტერნეტში, მასწავლებელი არ ხსნის სისულელეს და აზრი არ აქვს, მონოტონური მფ. ასე ხსნით ცნებებს.
პასუხი
პასუხის დატოვება პასუხის გაუქმება
თქვენი ელფოსტის მისამართი არ გამოქვეყნდება. აუცილებელი ველები მონიშნულია
კომენტარი
სახელი
ელფოსტა
ვებგვერდი
გამორჩეული პოსტები
სხვაობა კორონავირუსსა და გაციების სიმპტომებს შორის
სხვაობა კორონავირუსსა და SARS-ს შორის
სხვაობა კორონავირუსსა და გრიპს შორის
სხვაობა კორონავირუსსა და კოვიდ 19-ს შორის
შეიძლება მოგეწონოთ
სხვაობა ციმბირულ ჰასკისა და მალამუტს შორის
სხვაობა Calculus AB-სა და BC-ს შორის
სხვაობა ორმაგი მაიორსა და ორმაგ ხარისხს შორის
სხვაობა სატრანსფერო ქაღალდს შორის ღია და მუქი პერანგებისთვის
-ს შორის