Protected variables and methods allow the class itself to access them, classes inside of the same package to access them, and subclasses of that class to access them.
Read more: Here
A static variable is one that’s associated with a class, not objects of that class. Static variables is initialized only once.
OOP Languages are supported "static" keyword and their properties but many OOP programmers think that static variables or static methods should not be used in programs. One reason of that,static variables are stored in Stack.Then if so many static variables are used in program,stack is fulling.