Әдістерді қайта жүктеу
Object Pascal-да Delphi-дің төртінші версиясынан бастап қайта жүктелетін әдістер деп аталатын әдістердің түрі пайда болды. Әдістердің осы категориясы алдыңғы екі әдіске қарама-қарсы емес, виртуалды әдістер де, динамикалық әдістер де қайта жүктелетін әдіс бола алады. Қайта жүктеу әртипті мәліметтермен бірдей немесе ұқсас әрекеттер орындау үшін қажет.
Әдісті қайта жүктелетіндей жариялау үшін overload директивасы қолданылады. Мысалы:
Дәріс №11. Қасиеттер. Қарапайым қасиеттер. Массив-қасиеттер. Индекстелетін массивтер. Метакласстар. Класстарға ңұсқама (метакласс). Is және as амалдары.
Мұрагерлеу иерархиясын ұйымдастыру кезінде барлық класстар үшін бірдей әдістерді әдетте ата-баба класында статикалық әдістер ретінде жариялайды, ал маңызы бірдей, бірақ жүзеге асырылуы бойынша айрықшаланатын әдістерді ата-баба класында виртуалды және динамикалық әдістер ретінде жариялайды да ұрпақтарда көлегейлейді. Бірақ ұрпақ класстар үшін тек жүзеге асырылуы бойынша ғана емес, маңызы бойынша да бірегей болатын мінез-құлықтар бар. Мұндай әдістерді ұрпақ-класстарда жариялайды. Егер ұрпақ-класс типті нысандармен ата-баба-класына нұсқауыш арқылы жұмыс істесе, онда мұндай әдістерді тікелей шақыруға болмайды, ата-баба-класстарда олар жоқ. Бұл мәселені шешу үшін нысандық типтерді келтіру қолданылады. Басқа сөзбен айтқанда, нысандық типтерді келтіру келесілерді жасауға мүмкіндік береді: егер нысанға нұсқауыш ата-баба-классы типті болса, ал шынайы нысан жаңа әдістері бар ұрпақ-классқа жатса, онда осы әдістерге тек осы әдістері бар классқа нұсқауыш типін келтіру арқылы жетуге болады. Нысандық типтер үшін басқа кез-келген басқалары үшін де типтерді айқын келтіруге болады:
TAnotherType(ASomeObject).Methodl
Типтер сәйкестігін тексеру мұнда жүргізілмейді. Сондықтан мұндай әдісті қолдану ұсынылмайды. Нысандық типтерді келтіру үшін as операторы қолданылады. Оның көмегімен нысан экземплярын басқа сәйкес типке жататындай етіп қарастыруға болады:
(AsomeObject as TAnotherType).Methodl
Нысандық типтерді as операторын қолдану арқылы келтіру мысалын қарастырамыз:
Дәріс №12. Класстың әдістері. Программаны орындау кезеңінде типтерді анықтау механизмі. Әдістерді делегирлеу.
Достарыңызбен бөлісу: |