The idea behind the "Script" class is that it provides a lot of stuff to run your class as a script. This means that your main class should extends Script so it runs but it also means that you shouldn't just have any class extends Script to get access to the OSBot API. One common way to handle this is to pass a MethodProvider to each new object you make like so:
BankingClass banker = new BankingClass( (MethodProvider)this );
If this code is run in your main class (that extends Script) then it will construct a BankingClass object and give it the MethodProvider (the script class extends MethodProvider so we can cast the Script up to its parent class, MethodProvider). Now in the BankingClass I can refer to its MethodProvider to access any cool functions. Another way to handle this is to make a class with a static MethodProvider and then updating that from your main class (I recommend looking up how static variables/functions work vs member variables and functions, if this doesn't make a whole lot of sense).
Well first off, getWalking() and getBank() have support for most common walking/banking features so you don't necessarily need your own classes for them but you could make them if you want custom/extended functionality.
Second, you are getting into design decisions here which honestly is a really hard part of programming. I cannot simply teach you the best way to design and layout your project, you generally learn that skill through trial and error.
The way I would think about it (not saying this is the best/cleanest way, simply what I personally would do) is make a task/node based script where you have different nodes/tasks for each of these things instead of classes that extend things. E.g. you want to make a mining script: task1 = mineOres, task2 = dropOres. And then add whatever code specific to mining an ore or dropping an ore in those tasks/nodes.