Шта су интерфејси у Ц++

Sta Su Interfejsi U C



Интерфејси, обично познати као апстрактне класе, само су извор описа понашања класе без обавезивања на имплементацију класе. Не постоји уграђени концепт интерфејса у Ц++ програмирању. Да бисмо започели креирање интерфејса, прво морамо успоставити апстрактну класу само са чистим виртуелним функцијама.

Интерфејси у Ц++ се примењују помоћу апстрактних класа. С друге стране, класа се назива апстрактном класом ако је бар једна функција унутар класе декларисана као чиста виртуелна функција.

Шта је чиста виртуелна функција

Тхе Чиста виртуелна функција значи да корисници само декларишу функцију, а не њену дефиницију. Замена метода/функције се користи за имплементацију чистих виртуелних метода у изведену класу. Функција се сматра чисто виртуелном ако је описана унутар класе као што је дато у наставку:







Ево синтаксе а Чиста виртуелна функција разредне собе.



класа Соба {
јавности :
// чиста виртуелна функција
виртуелни дупло Гетариа ( ) = 0 ;

приватни :
дупло дужина ; // Дужина собе
дупло Ширина ; // Ширина собе
} ;

Шта је апстрактна класа

Класа која је креирана посебно да служи као основна класа назива се ан апстрактна класа . Најмање једна чиста виртуелна функција мора бити присутна у апстрактној класи. Може укључивати променљиве и стандардне функције. Изведене класе које има апстрактна класа треба да имплементирају чисту виртуелну функцију основне класе, иначе ће постати апстрактне.



Размотрите следећи пример, у којем родитељска класа даје интерфејс основној класи да би основна класа применила чисту виртуелну функцију која се зове гетАреа() . Две различите класе користе исто гетАреа() функцију, али ће излаз за оба случаја бити другачији.





#инцлуде <иостреам>
Користећи именског простора стд ;
класа Облик
{
јавности :
виртуелни инт Гетариа ( ) = 0 ;
празнина сетВидтх ( инт втх )
{
ширина = втх ;
}

празнина сетЛенгтх ( инт лтх )
{
дужина = лтх ;
}

заштићени :
инт ширина ;
инт дужина ;
} ;

класа Правоугаоник : јавности Облик
{
јавности : инт Гетариа ( )
{
повратак ( ширина * дужина ) ;
}
} ;

класа Троугао : јавности Облик
{
јавности : инт Гетариа ( )
{
повратак ( ширина * дужина ) / 2 ;
}
} ;

инт главни ( празнина )
{
Правоугаоник Р ;
Троугао Т ;
Р. сетВидтх ( 9 ) ;
Р. сетЛенгтх ( 5 ) ;
цоут << 'Област правоугаоника: ' << Р. Гетариа ( ) << ендл ;
Т. сетВидтх ( 9 ) ;
Т. сетЛенгтх ( 5 ) ;
цоут << 'Област троугла: ' << Т. Гетариа ( ) << ендл ;
повратак 0 ;
}

Излаз



Важност интерфејса

Свака класа изведена из чисте апстрактне класе (Интерфејс) увек треба да имплементира сваку од метода основне класе, тј. Интерфејс. Показивачи интерфејса могу се прослеђивати функцијама као и класама, што нам омогућава да одатле позовемо функције изведене класе.

Која су правила за коришћење интерфејса

Постоје следећа правила која корисници треба да поштују за коришћење интерфејса у Ц++:

  • Декларисајте само чисте виртуелне функције.
  • Додељено само 0 чистим виртуелним функцијама.
  • Не креирајте интерфејс класа.
  • Користећи референцу на основну апстрактну класу, можемо креирати показивач на инстанцу изведене класе.

У следећем коду, интерфејс линукхинт , као да је апстрактна класа креирана коришћењем чисте виртуелне методе, као и да је њена функција примењена у подређеној класи, а ми смо назвали ретурнСтринг() метод у главној функцији пратећи правила интерфејса.

#инцлуде <иостреам>
#инцлуде <иостреам>
#инцлуде <стринг>
Користећи именског простора стд ;

класа линукхинт
{
јавности :
виртуелни стринг ретурнСтринг ( ) = 0 ;
} ;
класа дете : јавности линукхинт
{
јавности :
стринг ретурнСтринг ( )
{
повратак 'Здраво Линукхинт' ;
}
} ;
инт главни ( )
{
дете дете_објекат ;
линукхинт * пнтр ;
пнтр = & дете_објекат ;
цоут < ретурнСтринг ( ) ;
повратак 0 ;
}

Излаз

Закључак

Интерфејси су апстрактне класе које описују понашање класе које треба да имплементира потребну класу у Ц++. Горе наведене смернице су кључне за почетнике да унапреде своје Ц++ програмске вештине радећи са интерфејсима. Пронаћи ћете и неке примере који ће вам помоћи да научите имплементацију интерфејса у Ц++.