Abstarct and Interface Class/ Methods use in Selenium Webdriver


Selenium is an interface and the Class like FirefoxDriver, ChromeDriver, 
  InternetExplorerDriver, SafariDriver and AndroidDriver which implement the 
  Selenium interface has their own implementation for the all the abstract methods
  in Selenium interface. So all the Classes are implementing the same interface to 
  have the same methods across all the browsers but the methods implemented 
  (coding of method body) will be different for FirefoxDriver (to make the automation 
  work for Firefox Browser) and ChromeDriver (methods implemented differently to make
  the automation work on Chrome Browser)
  
  
WebDriver driver = new FirefoxDriver();

Or

WebDriver driver = new ChromeDriver();

Here, WebDriver Is Interface and FirefoxDriver and ChromeDriver are the class files where 
WebDriver Interface Is Implemented.