1. Define an abstract Contact class that has the following fields and necessary methods:
an ID, first name and last name, e-mail address and mobile phone number.
2. Define a BusinessContact class which is a subclass of Contact. Add the following fields and necessary methods:
Company name, work phone.
3. Define a PersonalContact class which is also a subclass of Contact. Add the following fields and necessary methods:
Birth date, Home phone.
4. Define a generic class named AddressBook whose type parameter T can be substituted by the Contact class or any of its subclasses. Define an add method which adds a new T object to the collection, and a delete method, which removes ALL objects that match the given name.