접근제어자
접근제어자에는 종류가 4가지가 있다 4가지로는
1. public
2. default
3. private
4. protected 가 있다.
각각 접근할 수 있는 범위가 다른데 private의 경우에는 선언한 클래스에서만 사용이 가능하다.
default와 public의 경우에는 다른 클래스에도 공유가 가능하며 기본적으로 클래스 내에서
접근제어자를 선언하지 않았다고 한다면 default로 선언이 된거라고 생각하면 된다.
하지만 default도 같은 패키지 내에서만 가능하고 다른 패키지의 클래스에서는 사용이 되지 않는다.
private는 선언한 클래스,패키지 안에서만 사용이 가능하며 같은 패키지 안의 다른 클래스에게도 공유가 안된다.
아래의 정리된 표를 보면 되며 접근자는 이정도만 알면 된다고 한다.

Getter , Setter
자바에서는 Getter 와 Setter가 있다, 이 부분을 사용하는 이유는 필드 값에 들어오면 안되는
적절하지 않는 값이 대입되는 것을 막기 위해서 사용이 되며 보통은 private로 직접적인 접근을
막은 상태에서 getter와 setter 메서드를 통해서만 접근을 할 수 있도록 제한 할 수 있게 한다.
class Main {
public static void main(String[] args) {
사람 a사람 = new 사람();
// 구현시작
a사람.setId(20);
a사람.getId();
// 구현끝
// 출력 : 제 번호는 20 입니다.
}
}
class 사람 {
private int id;
// 구현 시작
public int getId() {
return id;
}
public void setId(int id) {
if (id <= 20) {
this.id = id;
System.out.printf("제 번호는 %d 입니다.", id);
}
}
// 구현 끝
}
예를 들어 위와 같이 사용을 할 수 있는데 setter를 통해서 20이라는 값을 받고 나서 이 값을 그대로
이어가기 위해 this.id = id 라는 코드를 통해서 id 값이 변하지 않게 해준다,
다른 부분으로도 활용할 수 있는 것은 있지만 큰 예는 이렇게 들 수 있다.
에러 처리
에러에는 종류가 몇가지 있다, 물론 발생하는 이유가 다 있고 이때동안 그런 에러가 발생 했을 때에는 해결해서
결과를 봤지만 이번에는 에러를 직접적으로 처리를 하기 보단 에러가 발생 했을 때 어떤 값 또는 문구가 나오도록
에러를 처리할 수 있다, 우선 그 전에 에러의 종류가 어떤게 있는지 알아야하는데 에러의 종류는 아래와 같다.
| 분류 | 에러 | 이유 |
| RuntimeException | ArithmeticException | 어떤 수를 0으로 나눌 때 발생 |
| NullPointerException | 널 객체를 참조하는 경우 | |
| ClassCastException | 부적절하게 클래스를 형변환하는 경우 | |
| NegativeArraySizeException | 배열의 크기가 음수값인 경우 | |
| OutOfMemoryException | 사용 가능한 메모리가 없는 경우 | |
| NoClassDefFoundException | 원하는 클래스를 찾지 못한 경우 | |
| ArrayIndexOutOfBoundsException | 배열을 참조하는 인덱스가 잘못된 경우 |
마지막에 ArryaIndexOutOfBoundsException의 경우에는 인덱스의 길이가 넘었을 때도 발생이 되는 에러 중 하나이다.
이렇게 에러의 종류가 있는데 여기에서 에러를 처리하기 위해선 try catch 문을 사용해서 에러를 처리할 수 있다.
class Main {
public static void main(String[] args) {
int rs = 계산기.나누다(10, 0);
System.out.println(rs);
}
}
class 계산기 {
static public int 나누다(int a, int b) {
int rs = 0;
try {
rs = a / b;
} catch(ArithmeticException e) {
rs = -1;
}
return rs;
}
}
위의 코드와 같이 try catch 문을 활용해서 해결을 할 수 있으며 위의 코드는 10을 0으로 나누는데 발생한 에러인
ArithmeticException 에러를 해결한 코드이다.
위의 코드를 다르게 해결할 수 도 있는데 그 코드는 아래의 코드와 같다.
class Main {
public static void main(String[] args) {
try {
int rs = 계산기.나누다(10, 0);
System.out.println(rs);
} catch (ArithmeticException e) {
System.out.println("0으로 나눌수는 없습니다.");
} catch (Exception e) {
System.out.println("알 수 없는 에러가 발생하였습니다.");
}
}
}
class 계산기 {
static public int 나누다(int a, int b) throws ArithmeticException {
int rs = 0;
rs = a / b;
return rs;
}
}
class Main {
public static void main(String[] args) {
int[] arr = new int[10];
채우기(arr);
for ( int i = 0; i < arr.length; i++ ) {
System.out.println("arr[" + i + "] => " + arr[i]);
}
}
static void 채우기(int[] arr) {
for(int i = 0; i < 13; i++) {
try {
arr[i] = (i + 1) * 100;
} catch ( ArrayIndexOutOfBoundsException e ) {
System.out.println("배열의 크기를 넘어선 index 사용이 감지되었습니다.");
break;
}
}
}
}
위의 코드는 ArrayIndexOutOfBoundsException 에러가 발생했을 때 처리를 한 코드인데
위 에러는 배열의 길이를 넘어섰을 때 즉, 배열의 길이가 총 10인데 10을 넘어 참조할 인덱스가 없는 경우
발생한 에러이며 발생 시
" 배열의 크기를 넘어선 index 사용이 감지되었습니다. " 라는 문구가 나오도록 에러를 처리한 코드이다.
'Java' 카테고리의 다른 글
| 2022-09-30 자바(숫자만 뽑은 후 더하기) (1) | 2022.09.30 |
|---|---|
| 2022-09-16 자바 (1) | 2022.09.16 |
| 2022-09-13 자바 수업 (interface,implements) (0) | 2022.09.13 |
| 2022-09-08 자바 (0) | 2022.09.08 |
| 2022-09-07 자바 (제네릭, 해쉬맵(간단)) (0) | 2022.09.07 |
댓글