Пытаясь узнать о методе получения, и при этом я получаю ошибку с кодом ниже java. может кто-нибудь исправить это и объяснить - PullRequest
0 голосов
/ 20 января 2020
class Source {
   public static void main(String[] args) {

       // Write code here
        Person p1 = new Person(name:"Ankit");
   }
   public static void printName(Person p){
       System.out.println("name is :"+ p.getName());
   }
}

class Person {
   private String name;
   public Person(String name) {       
       this.name = name;
   }
   public String getName(){
       return this.name;
   }

   // Declare a getter method here
}

В приведенном выше коде я получаю сообщение об ошибке для строки "Person p1 = new Person (name:" Ankit ");" Может кто-то объяснить, почему

Ответы [ 4 ]

1 голос
/ 20 января 2020

В конструктор класса Person вы можете передавать только параметры String. Ниже кода name: - неизвестный символ. Вот почему это дает ошибку.

Person p1 = new Person(name:"Ankit");

Вы должны изменить свой код, как показано ниже.

Person p1 = new Person("Ankit");
0 голосов
/ 20 января 2020

В приведенном выше коде я получаю сообщение об ошибке для строки "Person p1 = new Person (name:" Ankit ");" Кто-то может объяснить, почему

Это потому, что ваш синтаксис вызывать конструктор неверно. Нет необходимости указывать параметр.

Просто сделайте это следующим образом:

Person p1 = new Person("Ankit");

В случае, если вам интересно, как Java узнает, на какой параметр вы ссылались, если вы не указали параметр. Он следует порядку параметров при создании конструктора (то же самое для вызова метода):

Допустим, у вас есть name и nick name (оба являются String):

//Constructor
//1st param: name
//2nd param: nickName
public Person(String name, String nickName){
    this.name = name;
    this.nickName = nickName;
}

//Creating Person object
Person p = new Person("Rowan Atkinson", "Bean");   //name:Rowan Atkinson, nickName:Bean
                           ^              ^
                      // 1st param     2nd param
0 голосов
/ 20 января 2020

Параметр, который вы объявили для конструктора Person, является строкой. Когда вы вызываете конструктор, вы передаете name, который не является частью того, как вы объявили Person, сконструирован.

Аргумент, который вы передаете, когда говорите new Person(//some argument), копируется в параметр, которому он соответствует в объявление конструктора и используется, как вы указали там. Поскольку вы присваиваете значение переменной типа String , вы должны передать только String .

You может сделать это следующим образом:
1. Передача литерала String в качестве аргумента:
2. Передача другой переменной типа String.
3. Создание нового объекта String в аргументе

    // First way
    Person p1 = new Person("Ankit");

    // Second way
    String s = "Ankit";
    Person p1 = new Person(s);

    // Third way
    Person p1 = new Person(new String("Ankit"));
0 голосов
/ 20 января 2020

Person p1 = new Person ("Ankit");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...