메소드가 헷갈리는 경우
2022.10.04 - [자바/개념정리] - [JAVA] 클래스와 메소드
[JAVA] 클래스와 메소드
자바는 객체 지향 프로그래밍(OOP, Object-Oriented Programming)이다. 자바는 모든 데이터를 객체(object)로 취급한다. 객체(object)는 사물과 같은 것으로 상태(state)와 행동(behavior)을 포함한다. 자바에서..
jjh-blog.tistory.com
메인 메소드의 형태는 다음과 같다.
public static void main(String[] args){ //메소드내용 } |
접근제어자, access modifier 리턴 타입, return type 메소드명 (매개변수, parameter) 예외목록, exception list { //메소드내용 } |
접근제어자
접근 제어자는 클래스, 맴버변수, 메서드, 생성자에 사용 되며, 외부에서 접근하지 못하도록 제한하는 역할을 한다.
자바에서는 4가지 접근 제어자를 제공한다.
- private : 같은 클래스에서만 접근 가능
- default : 같은 패키지 내의 클래스에서만 접근 가능
- protected : 동일 패키지의 클래스, 클래스를 상속받은 다른 패키지의 클래스에서만 접근 가능
- public : 모든 클래스에서 접근 가능
다음과 같은 Box9 클래스를 만들었다고 가정해보자.
EX01.
코드
class Box9{
private int width;
private int height;
private int depth;
private int vol;
public Box9(int width, int height, int depth) {
this.width = width;
this.height = height;
this.depth = depth;
volume();
}
private void volume() {
vol = width*height*depth;
}
public int getvolume() {
return vol;
}
}
public class Box9test1 {
public static void main(String[] args) {
Box9 mybox1 = new Box9(10,20,30);
mybox1.width = 20;
}
}
결과
에러가 난다. 이유가 왜 일까.
콘솔 창에 [The field Box9.width is not visible] 이라는 문구를 볼 수 있는데, Box9에서 width값이 보이지 않는다는 뜻이다. private int width;로 우리는 변수에 접근을 제어해 놓았다. private는 같은 클래스 에서만 접근이 가능하므로 Box9test1 클래스에서는 접근 할 수 없다.
EX02.
위의 코드에서 mybox1.width = 20; 를 int vol1 = mybox1.volume(); 로 바꿔보자.
코드
int vol1 = mybox1.volume();
결과
역시 에러가 난다.
콘솔 창에 [The method volume() from the type Box9 is not visible] 라는 문구가 보일 것 이다. 해당 볼륨을 찾을 수 없다는 뜻이다. private void volume()로 우리는 볼륨에 접근을 제어해 놓았다. private는 같은 클래스 에서만 접근이 가능하므로 Box9test1 클래스에서는 접근 할 수 없다.
접근 제어자는 클래스, 맴버변수, 메서드, 생성자에 사용 할 수 있다.
EX03.
위의 코드에서 System.out.println("정수 박스의 부피 : " + mybox1.getvolume());로 바꿔보자.
코드
System.out.println("정수 박스의 부피 : " + mybox1.getvolume());
결과
제대로 출력된다.
mybox1.getvolume()으로 public int getvolume()에 접근 했기 때문이다. public 모든 클래스에서 접근이 가능하므로 에러가 발생하지 않는다.
'JAVA > 개념정리' 카테고리의 다른 글
[JAVA] 상속과 생성자 (0) | 2022.10.12 |
---|---|
[JAVA] 상속 extends (0) | 2022.10.11 |
[JAVA] 생성자 - 예약어 this (0) | 2022.10.07 |
[JAVA] 생성자 - 묵시적 생성자, 명시적 생성자 (2) | 2022.10.07 |
[Java] System.arraycopy (0) | 2022.10.06 |
댓글