Java Inheritance Problem

I have the finance application where we can have different types of transactions, like balance enquiry, funds transfer, and pin change etc. Now the Transaction is a base class, and there are specific child classes implementing it as per above use cases.

Class Transaction
{
    int txnId;
    String sourceAccountNumber;
}
Class PinChange extends Transaction
{
    int pin;
}
Class FundsTransfer extends Transaction
{
    int amount;
    String destAccountNumber;
}

Now I have a BankService object which takes transaction and executes it.

Class BankService
{
    executeTransaction(Transaction transaction)
}

I want to know:

  1. How will BankService knows what is the type of transaction? Do I need to wrap it up in a new Enum like TransactionType and put it in transaction base class?

  2. When the BankService comes to know type of transaction, how will it access specific class details? I think it needs to type cast transaction to specific child class, which seems bad to me. Thoughts?