объяснение назначения java-кода в приватной пустоте - PullRequest
0 голосов
/ 19 мая 2019

Может кто-нибудь объяснить мне, как это работает?Я получаю c в качестве выходного, это мой третий день на Java.Спасибо заранее

class adarsh
{
  private void print( ){
    System.out.println("a");
  }
  private void print(String str){
    System.out.println("b");
  }
  private void print(int x){
    System.out.println("c");
  }
  public static void main(String[] args){
    adarsh object = new adarsh();
    object.print(12);
  }
}

Ответы [ 3 ]

3 голосов
/ 19 мая 2019

Тогда у класса есть несколько методов с одинаковым именем и разными списками параметров, это называется перегрузка метода . print - перегруженный метод в вашем классе. Когда вы используете его, метод, который используется, зависит от количества и типа аргументов, которые вы используете в вызове: используется метод наилучшего соответствия. Поскольку вы использовали 12, который является целочисленным литералом, он имеет тип int, поэтому был вызван print(int). Если бы вы не использовали аргумент, вы бы вызвали print(). Если бы вы использовали print("foo"), позвонил бы print(String).


Примечание: пожалуйста, используйте Соглашения об именах Java , по крайней мере, при обращении за помощью (но также лучше, когда не обращаются за помощью). Ваш класс должен называться Adarsh, а не adarsh.

1 голос
/ 19 мая 2019

То, что вы пробовали, является примером Перегрузка метода , который позволяет разным методам иметь одно и то же имя , но разные подписи, где подпись может отличаться числом входных параметров или тип входных параметров или оба.

В вашем коде object.print (12) соответствует методу, основанному на типе аргумента. Вы вызываете метод, передавая int 12, чтобы вызывался метод с int в качестве аргумента , и он печатал c

Использование перегрузки

Нам не нужно создавать и запоминать разные имена для функций, выполняющих одно и то же. Например, в вашем коде, если перегрузка не поддерживается Java, вам придется создавать имена методов, такие как print1, print2, print3… и т. Д., Хотя все методы выполняют одинаковую работу печати. Таким образом улучшается читаемость кода.

И еще одна вещь, пожалуйста, используйте соглашения об именах Java

  • Имена классов должны быть существительными, в смешанном регистре с заглавной первой буквой каждого внутреннего слова.

  • Используйте целые слова и избегайте сокращений и аббревиатур.

1 голос
/ 19 мая 2019

См. Перегрузка метода в Java .Метод с подписью private void print(int x) был выбран компилятором, поскольку вы передали print int.

...