Interface와 abstract class의 사용이유
- 인터페이스와 추상화는 전체적인 규격을 만들어 주기 때문에 공통화 작업을 할 때 많이 사용한다.
- 완벽한 한 몸 일때는 결합도가 높기 때문에 인터페이스나 추상화를 활용하면 결합도를 감소시킨다
- 결합도가 낮다는건 다른걸로 대체 가능하다는 것이다.
- 인터페이스나 추상화로 규격만 맞춰준다면 코드간에 호환성을 높일 수 있다.

- 인터페이스를 사용하지 않은 경우
- 공통적으로 들어가는 메서드들이 있는데 하나하나 만들어줘야하는 어려움
- 기존에 있는 클래스 말고 다른 클래스가 들어간다고 했을때도 하나하나 또 만들어야 하는 어려움이 있다.

- 인터페이스를 사용하는 경우
- 해당 인터페이스를 구현받기만 하면 그 안에 있는 메서드 활용 가능
예외와 에러의 차이

try - catch
- 문제 발생시 스스로 해결한다.

- 12 ~16( try ) : 문제가 발생할 수도 있는 코드
- 14 ~ 15 : data1과 data2를 정수형으로 바꿔준다
- 17 ~ 18( catch ) : 문제 발생시 처리하는 영역 , 문제가 없다면 실행 안됨
- 19 ( finally ) : 문제 발생 여부에 관계없이 실행하는 영역
- 출력값 :
- 
- data2는 문자열 이기 때문에 15에서 숫자 변환시 문자가 포함 되어 있으므로 NumverFormatException이 발생했다.
multi catch
- 여러예외 발생시 각 예외마다 다른 처리를 해주고 싶은 경우

- 14 : ArrayIndexOutOfBoundsException 발생
- 16 : NumberFormatException 발생
- 출력 값 :
- 
○ ArrayIndexOutOfBoundsException와 NumberFormatException이 둘다 발생 했지만 try에서 문제가 발생되면 바로 catch로 넘어가기 때문에 더 먼저 실행된 ArrayIndexOutOfBoundsException발생만 잡아 처리되었다.
○ 다른 문제도 있나 확인하려면 예외가 발생한 코드를 주석 처리 해줘야한다.
OR exception
- multi catch와 다르게 예외에 상관없이 똑같이 처리할 때 사용 한다.

Exception 다형성

- 모든 예외는 Exception안에 들어가기 때문에 다형성을 이용할 수 있다.
throws
- 예외가 발생한 일을 시킨 메서드에게 처리를 전가한다

- 계속 위로 올라가면서 처리를 전가하는 것이다
- 전가하다가 결국 try-catch를 하는 곳에서 끝난다.


- class Sub 10 method2()에서 문제 발생 -> 시킨 method1()에게 전가
-> main()에게 전가 -> main에서도 처리를 안하면 JVM에게 전가
강제 예외 발생
- 정리한것만 알아두면 됨

- throw : 강제로 예외를 발생시키는 키워드이다
- 11 : 강제로 일반예외 발생
- 12 : 강제로 실행예외 발생
- 13 : 강제로 Reserved예외 발생

- e : 에러메시지를 간단히 보여주는기능
- 16 : 예외에 대한 자세한 정보를 보여준다
문자열을 만드는 방법

- char[]의 배열로 나타내는게 String이다
- String은 클래스이다
문자열 활용

- String 생성자 오버로드 : 같은 이름으로 여러개의 생성자가 있다.


