C++ Interfaces

Interface are providing the behavior or designing strategy of base class. In c++ abstract class are used to pure virtual function.

Pure virtual function are start with keyword of virtual. And there are specialty of this function there is no body portion (definition) of this function. see the declaration of pure virtual function

 virtual return_type function_name(parameter_list)=0;
/*--------
  //Explanation
  virtual : keyword
  return_type: return data type
  function_name: name of function
  parameter_list: arguments
  =0  : no body
----------*/

for example

virtual int info()=0;
virtual void salary()=0;

Important point, any class are contain at least one pure virtual function. that is called abstract class. And abstract class is provide guaranty those function are overridden by inherited derived class. it means derived class are provide real definition of pure virtual function. see the example and understand this point.

/*
  Abstract Class Example In C++ 
*/
#include<iostream>
using namespace std;

class Programming{
  private:
    //data member
    int data,keyword;
  public:
    //pure virtual function
    virtual void code()=0;
    void setValue(int,int);
    void display();
};
class Cpp: public Programming{
  public:
    //public member function
    void code();  
};
class Java:public Programming{
  public:
    //public member function
    void code();
};

void Programming::setValue(int data,int keyword){
  this->data=data;
  this->keyword=keyword;
}
void Programming::display(){
  //display private data
  cout<<" data    :"<<data<<endl;
  cout<<" keyword :"<<keyword<<endl;
}
void Cpp :: code(){
  cout<<"C Programming Code"<<endl;
}

void Java:: code(){
  cout<<"Java Programming Code"<<endl;
}
int main(){
  //Create Object of Derived class
  Cpp cpp;
  Java java;
  //set data value
  cpp.setValue(10,95);
  java.setValue(70,100);

  //execute public member function
  cpp.code();
  cpp.display();
  java.code();
  java.display();
}
Output
C Programming Code
 data    :10
 keyword :95
Java Programming Code
 data    :70
 keyword :100

In this program note that class Programming are have one pure virtual function (code()). This function are no body in Programming class. And derived class are overloaded this function. If derived class are not overloading virtual function then this will produce an error. see the example.

/*
  Abstract Class Example In C++ 
*/
#include<iostream>
using namespace std;

class Programming{
  private:
    //data member
    int data,keyword;
  public:
    //pure virtual function
    virtual void code()=0;
};
class Cpp: public Programming{
//logic
};
class Java:public Programming{
  //logic
};
int main(){
  Cpp cpp;
//logic here
}
Error:
 error: cannot declare variable 'cpp' to be of abstract type 'Cpp'
  Cpp cpp;
      ^~~
 because the following virtual functions are pure within 'Cpp':
 class Cpp: public Programming{
       ^~~
'virtual void Programming::code()'
 virtual void code()=0;

© 2019, regularcodes.com, All rights reserved