강의로 돌아가기
인승태

굳이 CarExam 객체를 메인에 선언하신 이유가 있나요?

이전까지는 딱히 CarExam객체를 따로 안만들었는데 이번에는 만들어진 이유가 있나요??

작성중인 코드―Car.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Car{
  public String name;
  public int capacity;  
  public int price;
  public int age;

  public Car(String name, int capacity, int price, int age){
    this.name = name;
    this.capacity = capacity;
    this.price = price;
    this.age = age;
  }

  public String toString(){
    return name;
  }
}
작성중인 코드―CarExam.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.*;
public class CarExam{
  public static void main(String[] args){
    //Car객체를 만들어서 cars에 넣습니다.
    List<Car> cars = new ArrayList<>();
    cars.add( new Car("작은차",2,800,3) );
    cars.add( new Car("봉고차",12,1500,8) );
    cars.add( new Car("중간차",5,2200,0) );
    cars.add( new Car("비싼차",5,3500,1) );

    CarExam carExam = new CarExam();
    carExam.printCar(cars, 
      //인터페이스 CheckCar의 test메소드에 대응하는 람다를 만듭니다.
      (Car car) -> { return car.capacity >= 4 && car.price < 2500; }
    );
  }

  public void printCar(List<Car> cars, CheckCar tester){
    for(Car car : cars){
        if (tester.test(car)) {
            System.out.println(car);
        }
    }
  }

  interface CheckCar{
    boolean test(Car car);
  }  
}
1 개의 답변
서봉균

printCar 메소드가 인스턴스 메소드이기 떄문입니다. printCar메소드를 사용하기 위해선 객체명.메소드이름 으로 접근해야 합니다.
반면, 클래스 메소드는 (객체명.)메소드로 접근할 수 있습니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.