როგორ წყვეტს ვირტუალური მემკვიდრეობა ალმასის პრობლემას?
როგორ წყვეტს ვირტუალური მემკვიდრეობა ალმასის პრობლემას?

ვიდეო: როგორ წყვეტს ვირტუალური მემკვიდრეობა ალმასის პრობლემას?

ვიდეო: როგორ წყვეტს ვირტუალური მემკვიდრეობა ალმასის პრობლემას?
ვიდეო: C++ Diamond problem in OOPS, Solution using Virtual Inheritance with Example 2024, მაისი
Anonim

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

ამასთან დაკავშირებით, რა არის ალმასის პრობლემა მემკვიდრეობით?

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

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

ასევე იცით, რა არის ვირტუალური საჯარო მემკვიდრეობა?

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

როგორ წყვეტს ინტერფეისი ალმასის პრობლემას?

Როგორ კეთდება გამოყენებით ა ინტერფეისი ჯავაში გადაჭრა The ალმასის პრობლემა ? აქედან გამომდინარე, თუ ორი ინტერფეისები აქვს იგივე მეთოდის ხელმოწერა და კლასს სურს მიიღოს მემკვიდრეობა (ინერგება Java-ში) ამ ორიდან ინტერფეისები , არ არსებობს "მეთოდი სხეული" მემკვიდრეობით, შესაბამისად " ბრილიანტი მემკვიდრეობა" პრობლემა თავიდან აცილება ხდება.

გირჩევთ: