A class
- это набор объектов abstract-i sh, определяемый их ссылкой на объект, характеризуемый их атрибутами (которые являются членами данных) и их способностями (то есть их методами).
Давайте начнем с того, в чем вы правы: на экземпляр, то есть на объект, можно ссылаться внутри его методов через ключевое слово this
. Что вы делаете не понимаете, так это то, что static
означает class
-уровень. Когда мы говорим о методах уровня class
, нет экземпляра для ссылки, а this
не имеет смысла.
В вашем примере вы вызываете метод уровня class
внутри другого class
-уровневый метод. Здесь нет this
, ни явно, ни неявно.
Рассмотрим аналогию:
Давайте рассмотрим набор Bird
. Экземпляр Bird
может .fly()
, весь класс Bird не может .fly()
, потому что пока экземпляр Bird
летает, другой сидит на своих яйцах. Однако у птиц могут быть коллективные действия, например .flyInFlock()
. Один экземпляр Bird
не может .flyInFlock()
, но Bird
, поскольку class
может это сделать, потому что это class
-уровень, на который ссылается ключевое слово stati c.
Методы уровня экземпляра могут быть вызваны через:
- ссылку на объект, например bird.fly ()
- через
this
внутри метода уровня экземпляра class
, например, this.fly()
- через его имя, с тем же условием, что и во втором случае здесь, как
fly()
В вашем примере делается то, что коллектив, class
-уровневый метод вызывает другой коллективный, class
-уровневый метод того же class
. В этом случае нет незаконного понижения с уровня class
до уровня экземпляра.