자바시작 0901
106
2020-09-09 12:18:13
3
155

자바 private 질문인데요..


package day0907;


//상품명, 수량,단가 멤버 변수

public class Shop {

private String sang;

private int su;

private int dan;

//setter method

public void setSang(String sang)

{

this.sang=sang;

}

public void setSu(int su)

{

this.su=su;

}

public void setDan(int dan)

{

this.dan=dan;

}

//getter method

public String getSang()

{

return sang;

}

public int getSu()

{

return su;

}

public int getDan()

{

return dan;

}

//수량*단가

public int getTotal()

{

return su*dan;

}

}

private정의가 자기클래스에만 접근가능(정보은닉)으로 알고있는데 여기선 class가 shop으로 되어있는데 이해가안갑니다 ㅠㅠ 코드하나씩 주석처리해주면서 설명해주시면 감사하겠습니다

0
  • 답변 3

  • onimusha
    8k
    2020-09-09 12:22:16
    질문이 이해가 안갑니다.
  • jw_891
    563
    2020-09-09 13:02:02

    클래스에 대해서 이해가 안되신 거 아닌지..

  • HJOW
    1k
    2020-09-09 13:05:24 작성 2020-09-09 13:13:40 수정됨

    class 개념에 대해 공부하고 계신 것 같습니다.


    지금 본문의 코드에는 Shop 클래스 하나만 정의되어 있습니다.

    즉, 그 안의 모든 메소드들은 Shop 이라는 클래스에 소속된 메소드들이므로
    당연히 private 필드에 접근이 가능한 것이 맞습니다.




    클래스를 정의해두면, 대개 다른데서 그 클래스로 객체를 만들어 사용합니다.

    자바로 만든 프로그램을 실행하면 제일 처음 실행되는 곳이

    public static void main(String[] args) 메소드인 건 아시죠?



    그 메소드이건, 혹은 거기서 호출된 메소드나 클래스 내에서건 간에, Shop 클래스 내부가 아닌 곳(즉, 외부) 에서

    new Shop() 라는 걸 하고 그 결과를 변수에다 담아서 사용할겁니다.


    Show shop1 = new Shop();

    shop1.setSu(1); // public 메소드이므로 가능

    shop1.su = 1; // private 이므로 컴파일 에러




    참고로 필드를 public 으로 지정하면 외부에서도 직접 액세스가 가능합니다.


    Shop shop2 = new Shop();

    shop2.su = 1; // su 필드가 public 이라면 가능

  • 로그인을 하시면 답변을 등록할 수 있습니다.