abstract class transakcjabankowa {

    private void firstMethodToExecute() {
        System.out.println("Proszę włożyć kartę:");
    }
    private void secondMethodToExecute() {
        System.out.println("Proszę podać pin:");
    }
    private void thirdMethodToExecute() {
        System.out.println("Proszę wybrać kwotę do wypłaty:");
    }
    abstract protected void fourthMethodToExecute();
    abstract protected void fifthMethodToExecute();
    abstract protected void sixthMethodToExecute();

    private void seventhMethodToExecute() {
        System.out.println("Proszę odebrać wybraną kwotę");
    }
    private void eighthMethodToExecute() {
        System.out.println("Dziękujemy za skorzydstanie z naszych usług");
    }

    public void run() {
        this.firstMethodToExecute();
        this.secondMethodToExecute();
        this.thirdMethodToExecute();
        this.fourthMethodToExecute();
        this.fifthMethodToExecute();
        this.sixthMethodToExecute();
        this.seventhMethodToExecute();
        this.eighthMethodToExecute();
    }
}

class BankTranRun extends transakcjabankowa {

    protected void fourthMethodToExecute() {
        System.out.println("Wysyłanie zapytania do serweru banku");
    }

    protected void fifthMethodToExecute() {
        System.out.println("Sprawdzanie stanu konta");
    }
    protected void sixthMethodToExecute() {
        System.out.println("Transakcja możliwa do wykonania saldo dostępne");
    }

    @Override                                                    // [1]
    public void run() {

        this.firstMethodToExecute();
        this.secondMethodToExecute();
        this.thirdMethodToExecute();
        this.fourthMethodToExecute();
        this.fifthMethodToExecute();
        this.sixthMethodToExecute();
        this.seventhMethodToExecute();
        this.eighthMethodToExecute();


    }
}

class Application {

    public static void main(String args[]) {
        BankTranRun runner = new BankTranRun();

        runner.run();
    }
}