AppiumDriver or Android/ios driver? MobileElement/WebElement

When I instantiate the driver should it be new AppiumDriver() or new AndroidDriver() (For Android) or new IOSDriver() (For iOS). What’s the purpose of just calling the generic AppiumDriver ?

I now see most of the methods in MobileElement class are deprecated. I also read somewhere that TouchAction class should be used for gestures. So MobileElement should never be used anymore? WebElement should be used for Native Apps and also Web View in mobile?

AppiumDriver: This driver class inherits from the RemoteWebDriver class, but it adds in additional functions that are useful in the context of a mobile automation test through the Appium server.

AndroidDriver: This driver class inherits from AppiumDriver, but it adds in additional functions that are useful in the context of a mobile automation test on Android devices through Appium. Only use this driver class if you want to start a test on an Android device or Android emulator.

IOSDriver: This driver class inherits from AppiumDriver, but it adds in additional functions that are useful in the context of a mobile automation test on iOS devices through Appium. Only use this driver class if you want to start a test on an iOS device or iOS emulator.

As you can see, the drivers and their names tie in closely with what they do. When it comes to initializing a driver, only use the Android or IOS drivers.