Открытые методы, помеченные public
, доступны для каждого класса.Защищенные методы, помеченные protected
, доступны для подклассов и дружественных классов, которые являются классами в одном пакете.Дружественные методы, помеченные ничем (то есть по умолчанию), доступны для дружественных классов.Закрытые методы доступны только самому классу.
Статические методы, помеченные static
, доступны для объекта без доступа к ним.Они вызываются ClassName.foo (), SuperClassName.foo () (не нужно, если не переопределено, foo () допустимо) или ClassName.foo () (не нужно, foo () приемлемо).), помеченные ничем (то есть по умолчанию), доступны только в том случае, если есть объект класса.Например: bar.foo (), this.foo () (необязательно, foo () допустимо) или super.foo () (не нужно, если не переопределено, foo () допустимо). Переопределенные методы, помеченные @Override
, являютсядоступно только через super.foo
Таким образом, в экземпляре ClassB будут доступны все protected
и public
члены и методы ClassA.В статическом вызове доступны только статические методы.