Lab 1 Inheritance Instructions Code the classes in your IDE
Solution
import java.util.*;
class Card             //base class Card
 {
    private String name;
    public Card()     //default constructor
    {
        name = \"\";
    }
    public Card(String n) //parameterized constructor
    {
        name = n;
    }
    public String getName()
    {
        return name;
    }
    public boolean isExpired()
    {
        return false;
    }
    public String format()
    {
        return \"Card holder: \" + name;
    }
    public String toString()   //overriding toString method
    {
        return \"Card[\"+name+\"]\";
    }
    public boolean equals(Card c)   //overriding equals method
    {
         if (c == null) return false;
            
             return ((this.name).equals(c.name));
                   
        }
 }
class IDCard extends Card   //derived class
 {
   
    private int IdNumber;
    public IDCard(String n,int id)
    {
        super(n);          //calling base class constructor
        IdNumber = id;
    }
    public String format()
    {
        return super.format() +\"ID : \" + IdNumber;
    }
    public String toString()
    {
        super.toString();   //calling base class toString() method
        return \"IDCard[\"+IdNumber+\"]\";
    }
    public boolean equals(IDCard ic)
    {
         if (ic == null) return false;
            
             return (this.IdNumber==ic.IdNumber);
                   
        }
   
 }
 class CallingCard extends Card
 {
   
    private int cardNumber;
    private int PIN;
    public CallingCard(String n,int cNumber,int pin)
    {
        super(n);
        cardNumber = cNumber;
        PIN = pin;
    }
    public String format()
    {
        return super.format() +\" Card Number : \" + cardNumber + \" PIN : \"+PIN;
    }
    public String toString()
    {
        super.toString();
        return \"CallingCard[\"+cardNumber+\"][\"+PIN+\"]\";
    }
    public boolean equals(CallingCard cc)
    {
         if (cc == null) return false;
            
             return ((this.cardNumber==cc.cardNumber)&&(this.PIN == cc.PIN));
                   
        }
 }
 class DriverLicense extends Card
 {
   
    private int expirationYear;
    public DriverLicense(String n,int eYear)
    {
        super(n);
        expirationYear = eYear;
    }
    public String format()
    {
        return super.format() +\" Expiration Year : \" + expirationYear;
    }
    public boolean isExpired(int currentYear)
    {
        if(expirationYear<currentYear)
        return true;
        else
        return false;
    }
    public String toString()
    {
        super.toString();
        return \"DriverLicense[\"+expirationYear+\"]\";
    }
    public boolean equals(DriverLicense dl)
    {
         if (dl == null) return false;
            
             return (this.expirationYear==dl.expirationYear);
                   
        }
   
 }
 class TestCards
 {
    public static void main (String[] args)
    {
    CallingCard cc1 = new CallingCard(\"callingcard1\",12345,5678);
    CallingCard cc2 = new CallingCard(\"callingcard1\",12345,5678);
   
    System.out.println(cc1.toString());
    System.out.println(cc2.toString());
   
    if(cc1.equals(cc2))
    System.out.println(\"Both cards are same\");
    else
    System.out.println(\"cards are not same\");
   
    }
 }
output:



