2015-12-19 2 views
3

этот класс работает:Объект и элемент массива?

public class Undergrad extends Student{ 
    private int year; 
    private int numOfCourses=0; 
    private Course[] courses=new Course[4]; 
    public Undergrad(int year,String name,String major,double gpa){ 
     super(name,major,gpa); 
     this.year=year; 
    } 
    public int getYear(){ 
     return year; 
    } 
    public void setYear(int year){ 
     this.year=year; 
    } 
    public String getName(){ 
     return name; 
    } 
    public String getMajor(){ 
     return major; 
    } 
    public double getGpa(){ 
     return gpa; 
    } 
    public void setGpa(double gpa){ 
     this.gpa=gpa; 
    } 
    public Course[] getCourses(){ 
     return courses; 
    } 
    public void addCourses(Course course){ 
     if(numOfCourses>=4){ 
      System.out.println("Student can not study"); 
     } else{ 
      courses[numOfCourses]=course; 
      numOfCourses++; 
     } 
    } 

    public void printCourses(){ 
     for(int i=0;i<numOfCourses;i++){ 
      System.out.println(courses[i].toString()); 

     } 
    } 
    public String toString(){ 
     return "Student name"+name+"courses"+numOfCourses; 
    } 
} 

но мне было просто интересно, не должен «Конечно» есть «S», так что становится курсы, так что он может стать таким же, как имя в массиве «курсов». Также метод printCourse аналогичен методу System.out.print?

public void addCourses(Course course) 
+0

Нет, это становится параметр передан addCourses в скобках. – Araymer

ответ

0

Course это просто имя класса. Даже если есть много объектов Course, имя остается прежним.

От courses - это имя ссылки объекта, поэтому вы можете свободно выбирать ее при ее создании.


Если ваш вопрос, почему в addCourses(Course course), конечно, не имеет с, это происходит потому, что это ссылка на Course объекта, а не массив.

courses[numOfCourses]=course 

Здесь мы добавляем course в courses массив Course объектов.

+0

хорошо, поэтому здесь (курс курса), курс - это элемент, и его можно назвать чем-то – john

+0

@john Действительно :) –

0

На ваш вопрос это не имеет никакого значения. Ваш метод addCourses не является методом setter или getter, поэтому в будущем вы хотите использовать класс для любых целей, которые подразумевают сериализацию, и все будет в порядке.

Но для удобства чтения вы можете переименовать его в void addCourse (курс c).

Кроме того, вы можете защититься от потенциального нулевого аргумента, используя факультативный класс, добавленный в Java 8.

public void addCourse(Course c){ 
    if(numOfCourses>=4){ 
      System.out.println("Student can not study"); 
     } else{ 
      courses[numOfCourses]=Optional.ofNullable(c).orElse(new Course(argument 1, argument 2, argument etc)); 
      numOfCourses++; 
     } 
} 
Смежные вопросы