How can java class send its parameters on need basis?

Viewed 62

I am new to Java. I have CardDetails class which is a return type of my getCardDetails method. Now, the scenario is I have common class(CardDetails) to return a result to my UI from method getCardDetails().

public class CardDetails {
    String cardNumber;
    String cardCode;
    String cardStatus;
    String debitCardPrimaryAccountNumber;
    String creditCardDescription;
    String creditCardActionCode;
}

If you see the class last fields creditCardDescription and creditCardActionCode are of credit card & debitCardPrimaryAccountNumber is only specific to DebitCard. Now, which concept of OOPs I can use so that in case of Credit Card my class object would be:

public class CardDetails {
    String cardNumber;
    String cardCode;
    String cardStatus;
    String creditCardDescription;
    String creditCardActionCode;
}

and for Debit card it would be:

public class CardDetails {
    String cardNumber;
    String cardCode;
    String cardStatus;
    String debitCardPrimaryAccountNumber;
}

As my return type would always be CardDetails class.

Thanks in advance !

2 Answers

Okay, so what you are trying to achieve is typical inheritance. You need a super class CardDetails and two more specific-sub-classes CreditCardDetails and DebitCardDetails which will extend the CardDetails class.

Here your superclass Card:

public class CardDetails {
    String cardNumber;
    String cardCode;
    String cardStatus;
}

Here are your two sub-classes:

public class CreditCardDetails extends CardDetails {
    String creditCardDescription;
    String creditCardActionCode;
}

public class DebitCardDetails extends CardDetails {
    String debitCardPrimaryAccountNumber;
}

To better understand the inheritance concept, it means that CreditCardDetails and DebitCardDetails both inherit (extend) from the CardDetails class, meaning that they contain all the attributes and methods of the superclass in this case CardDetails. Furthermore, your subclasses (CreditCardDetails and DebitCardDetails) have additional attributes and probably additional methods as you may add them.

Let me know if that helped. :)

public class CardDetails {
    String cardNumber;
    String cardCode;
    String cardStatus;
}

public class CreditCard extends CardDetails {
    String creditCardDescription;
    String creditCardActionCode;
}

public class DebitCard extends CardDetails {
    String debitCardPrimaryAccountNumber;
}
Related