Одно из отличий Java от Ruby - это модификаторы. Типы модификаторов - это ключевые слова, которые вы добавляете к тем определениям, значения которых вы хотите изменить. В Java есть множество модификаторов, включая модификаторы доступа и модификаторы запрета доступа.

Чтобы использовать модификатор, вы включаете его ключевое слово в определение класса, метода или переменной перед остальной частью оператора, как в примере ниже:

public int methodName(){
    //do something;
}

Модификаторы контроля доступа

Модификаторы управления доступом устанавливают уровни доступа для классов, переменных, методов и конструкторов. Уровни доступа могут быть:

  • Видно для пакета, значение по умолчанию. Никаких модификаторов не требуется.
  • Виден только классу (модификатор private).
  • Виден всему миру (модификатор public).
  • Виден пакету и всем подклассам (модификатор protected).

В Ruby есть что-то похожее с тремя уровнями защиты, которые он предоставляет. Эти три уровня определяют доступность методов класса и могут быть общедоступными (методы могут вызываться всеми вне класса), защищенными (методы могут быть вызваны только объектами определяющий класс и его подклассы) или private (методы могут вызываться только в контексте текущего объекта.)

Модификаторы без доступа

Многие другие функции могут быть реализованы с помощью модификаторов доступа Java:

  • Модификатор static для создания методов и переменных класса.
  • Модификатор final для завершения реализации классов, методов и переменных.
  • Модификатор abstract для создания абстрактных классов и методов.
  • Модификаторы synchronized и volatile, которые используются для потоков.

Ключевое слово Static

Ключевое слово s tatic позволяет методу работать без какого-либо экземпляра класса. Статический метод принадлежит классу, поэтому нет необходимости создавать экземпляр класса для доступа к нему. Чтобы создать статический метод в Java, вы должны префикс ключевого слова s tatic перед именем метода:

public static int min(int a, int b) {
    //returns the lesser of a and b
{

В классе можно комбинировать статические и нестатические методы, хотя даже один нестатический метод означает, что должен быть какой-то способ создать экземпляр класса. Каждый класс, в который вы помещаете метод main (), является классом со статическим методом в нем, поскольку метод main () всегда статичен.

Характеристики статических методов

  • Статический метод вызывается с использованием класса (className.methodName), а не ссылки на экземпляр (new instanceOfClass = class; instanceOfClass.methodName.)
  • Статические методы не могут использовать нестатические переменные экземпляра: статический метод не может ссылаться ни на какие переменные экземпляра класса. Статический метод не знает, какое значение переменной экземпляра использовать.
  • Статические методы не могут вызывать нестатические методы: нестатические методы обычно используют состояние переменной экземпляра, чтобы повлиять на свое поведение. Статические методы не могут видеть состояние переменной экземпляра, поэтому, если вы попытаетесь вызвать нестатический метод из статического метода, компилятор будет жаловаться независимо от того, использует ли нестатический метод переменную экземпляра или нет.

Нестатические методы

  • Нестатический метод не имеет ключевого слова static перед именем метода.
  • Нестатический метод принадлежит объекту класса, и вы должны создать экземпляр класса для доступа к нему.
  • Нестатические методы могут обращаться к любому статическому методу и любой статической переменной без создания экземпляра класса.