Написание простого класса с аксессуарами и мутаторами

#class #constructor #accessor #mutators

#класс #конструктор #средство доступа #мутаторы

Вопрос:

Я в значительной степени новичок в Java. Меня попросили написать класс Java для очень простого класса Course с именем Course, в котором указаны имена элементов данных и зачетные часы (например, «Программирование и логика I», 4). Ваш класс должен включать методы аксессора (т.Е. get) и мутатора (т. Е. set) для каждого атрибута и, по крайней мере, один перегруженный конструктор, который инициализирует имя элемента данных и количество зачетных часов.

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

 public class Course {

public String courseName;
public int creditHours;

public Course(String courseName, int creditHours) {

    this.courseName = courseName;
    this.creditHours = creditHours;


    public String getCourseName() {
        return courseName;
    }
    public int getCreditHours(){
        return creditHours
    }



   public void setCourse(String course)
   {
     this.course = course;
   }


   public void setHours(String hours)
   {
     this.hours = hours;
    }

}
}
  

Комментарии:

1. Некоторые подсказки для вас, ваши атрибуты должны быть частными, иначе нет смысла в аксессорах и мутаторах, поскольку их можно установить напрямую. Ваш конструктор содержит ваши аксессоры и мутаторы и должен закончиться раньше. Ваши установленные методы неверны, откуда this.course берется?

Ответ №1:

Ваш синтаксис просто немного не в порядке. В Java конструкторы объявляются как методы класса почти так же, как и любые другие методы. Попробуйте

 public Course {
    private String courseName;
    private int creditHours;

    public Course() {
        courseName = null;
        creditHours = 0;
    }

    public Course(String courseName, int creditHours) {
        this.courseName = courseName;
        this.creditHours = creditHours;
    }

    // ... and your getters and setters, which look fine except for one missing semicolon
}
  

Комментарии:

1. Меня всегда раздражает, когда люди комментируют, что что-то сработало, но нет большой зеленой галочки…

Ответ №2:

Прежде всего, ваш конструктор должен завершиться после инициализации ваших переменных. После этого у вас есть реализации вашего метода в скобках class. Вам также следует сделать объявления ваших переменных закрытыми. Только методы будут общедоступными или доступными извне.

Во-вторых, ваши методы установки должны задавать имена ваших переменных. Другими словами

 this.courseName = course;
  

вместо

    this.course = course;
  

у вас нет this.course.

Надеюсь, это поможет.