So, is it necessary to code the accesser methods(getters & setters) for these private variables?
It would not be necessary. However, it is good coding practice. I would expect these methods to be in the class and would direct the programmers to add them if they left them out. They are called accessors and mutators.
If I am coding them, do I need to make them as public? ( I'm not using these variables outside this class)
The variables do not need to be public. I would expect them to be private and would direct the programmers to make them private and add the accessor and mutator methods to the class.
when I am using these variables inside the same class do I need to use the accessor methods or can I directly accesses them like 'this.totalRuns'?
It is ok to directly access the variables within the class. The purpose of the accessor and mutator methods are to allow client objects to either get the values or ask the owning object to set the values.
Is it necessary to use 'this' keyword always when I'm accessing the variables & methods inside the same class?
It is not necessary to use the 'this' keyword. The class knows about it's own variables. However, it is a good programming practice to use the 'this' keyword. This improves readability and enables others that have not programmed the class to understand it faster, especially useful for classes with many methods and fields.
Good luck with your learning! Sounds fun