인프런 커뮤니티 질문&답변

liltjay님의 프로필 이미지
liltjay

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

접근제어자에 대하여..

해결된 질문

작성

·

395

·

수정됨

0

public class BlackBoxRefurbish {
    String modelName; 
    String resolution; 
    private int price;
    String color; 

    public String getModelName() {
        return modelName;
    }

    public void setModelName(String modelName) {
        this.modelName = modelName;
    }
 }

1.접근 제어자는 변수, 메서드, 성생자에 대한 접근 권한을 지정할 수 있고, getter와 setter는 메소드이기 때문에

public String getModelName() {} 처럼

"public을 통해 메소드인 게터와 스케터를 접근을 제어할 수 있다" 고 알고있으면 되는 걸까요?

2. 접근제어자(후반전) 강의 중 6분에서 alt + enter를 누르면 import class를 하셨는데 이거는 어떤 기능인가요? 맨 위에 import chap_07.A; 라고 뜨는데 뒤에서 배우는 부분인가요?

3.동일 강의 5분 38초 쯤에서 class A를 입력한 직후 기존 BlackBoxRefurbish 파일이 끝에 .java가 붙었습니다. 파일에 변화가 생긴건가요? 아니면 원래 클래스와 .java는 같은 건가요?

그리고 이후 자바 파일 내에서는 클래스를 여러 개 만들 수 있다고 하셨는데, 일반적인 클래스 파일 내에서는 여러 개의 클래스를 만들 수 없나요? 설명이 빈약하지만..

(새로운 강의를 시작할 때 마다) 패키지에 만드는 새로운 클래스 내부에 또다른 새로운 class를 적용할 수 없는 건지 궁금합니다..

감사합니다 ^^

답변 1

1

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
각 질문에 대해 다음과 같이 답변 드립니다.

1. 접근 제어자
맞습니다. 변수, 메소드, 생성자를 외부에서 접근하도록 허용할지 말지를 접근 제어자 (public, private 등)를 통해 컨트롤 할 수 있습니다. getter 와 setter 메소드를 public 으로 정의하면 어디에서든 접근 가능해집니다.

2. import
import 는 다른 코드의 내용을 가져다가 사용하기 위해 사용합니다. 작성해주신 코드 import chap_07.A; 는 chap_07 패키지에 있는 A 클래스를 가져다가 현재 코드에서 쓰겠다는 의미가 됩니다. import 구문 없이 A 클래스를 사용하려면 에러가 발생합니다. 이에 대해서는 뒤의 '패키지' 단원에서 배울 예정입니다.

3. .java 확장자
파일은 동일합니다. 다만 BlackBoxRefurbish.java 라는 파일에 A 라는 클래스가 새로 추가됨으로써 Project 뷰에서 BlackBoxRefurbish 및 A 클래스를 모두 확인할 수 있도록 하기 위해 화면이 변경되는 것일 뿐입니다. 모든 자바 파일은 .java 로 확장자가 만들어집니다.

3-1. 파일 하나에 여러 클래스
하나의 .java 파일 내에서 여러 개의 클래스를 정의할 수 있습니다. 단, public 으로 정의되는 클래스는 하나만 존재할 수 있으며 이때 클래스 이름은 반드시 파일명과 같아야 합니다.

// 파일명이 A.java 인 경우
public class A { ... }

class B { ... }

class C { ... }

3-2. 내부 클래스
클래스 내부에 또다른 클래스를 생성할 수 있습니다. 이를 내부 클래스 (Inner Class) 라고 합니다.

public class OuterClass { // 외부 클래스
    private int x = 5;

    class InnerClass { // 내부 클래스
        public void printVariable() {
            System.out.println("Variable X : " + x);
        }
    }
}

이때, InnerClass 의 사용법은 다음과 같습니다.

public class Main {
    public static void main(String[] args) {
        OuterClass out = new OuterClass();
        OuterClass.InnerClass in = out.new InnerClass();
        in.printVariable();
    }
}

궁금증 해결에 도움되셨기를 바라겠습니다 😊
감사합니다.

liltjay님의 프로필 이미지
liltjay

작성한 질문수

질문하기