정답

    String name;
    int number;
    or
    public String name;
    public int number;
    or
    protected String name;
    protected int number;

     

    해설

    접근 제한자는 public, protected, private, 생략(default) 이렇게 네 가지입니다. private은 자기 자신만 접근할 수 있는 접근 제한자로 Car 클래스의 private한 요소들은 Car 클래스에서만 사용 가능합니다. CarExamCar와 다른 클래스이므로 접근하려는 요소가 private이면 접근할 수 없는 것입니다. 접근 제한자를 생략하면 같은 패키지에 존재하는 객체는 접근할 수 있습니다. protected는 패키지가 같을 때는 물론이고, 패키지가 다르다 하더라도 두 객체 사이가 상속 관계라면 접근할 수 있습니다. public은 어떤 클래스든 모두 접근할 수 있습니다. 그러므로 Car 클래스와 CarExam 클래스가 같은 패키지에 있다고 가정하면 접근 제한자를 생략한 package 영역, public, protected 세 가지 접근 제한자가 모두 가능합니다.

     

     

    문제 2 접근 제한자는 필드와 마찬가지로 메서드에도 적용할 수 있습니다. CarExam 클래스가 실행되도록 수정해보세요.

    package javaStudy;
    public class Car{
        public void run() {
            System.out.println("차가 달립니다.");
        }
        private void stop() {
            System.out.println("차가 멈춥니다.");
        }
    }
    package javaStudy;
    public class CarExam{
        public static void main(String[]args) {
            Car car = new Car();
            car.run();
            car.stop();
        }
    }

     

    실행결과

    차가 달립니다.
    차가 멈춥니다.

     

    정답

    public void stop() {
        System.out.println("차가 멈춥니다."); 
    }

     

    해설

    private한 접근 제한자는 자기 클래스 내에서만 사용할 수 있으므로 외부에서 stop 메서드를 사용할 수 있도록 stop 메서드의 접근 제한자를 수정합니다. 두 클래스가 같은 패키지인지 아닌지 등의 구체적인 상황에 따라서 알맞은 접근 제한자로 수정하면 됩니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.