시간이 없어서 예제 스샷은 못찍었습니다 ㅠㅠ.
내일 평가가 있어서 평가공부를 해야 하거든요..
1.인터페이스의 static 메소드(클래스 메소드)
1) 인터페이스의 static 메소드는 인터페이스의 다른 메소들과 마찬가지로 public 선언된 것 으로 간주한다.
2) 프로그래머가 직접 인터페이스에 static 메소드를 정의하는 일은 드물다.
1. 인터페이스 대상의 instanceof 연산
인터페이스의 또 다른 사용 용도 : Marker Interface
1) 클래스에 특별한 표식을 다는 용도로 사용이 된다.
(1) interface Upper{ } // 마커 인터페이스
추상 클래스 : Abstract Class
1) 하나 이 상의 추상 메소드를 갖는 클래스를 가리킨다.
public abstract class House // 추상 클래스
public abstract void methodTwo(); // 추상메소드
2) 추상 클래스에는 클래스의 선언부에 abstract 선언을 추가해야 한다.
3) 추상 클래스를 대상으로 인스턴스 생성도 불가능하다.
4) 다른 클래스에 의해서 추상메소드가 구현이 되어야 한다.
5) 클래스이므로 상속 extends를 사용한다.
6) 여느 클래스들과 마찬가지로 인스턴스 변수와 인스턴스 메소드를 갖지만, 이를 상속하는 하위 클래스에 의해서 구현되어야 할 메소드가 하나 이상 있는 경우이다.
예외처리
1) 예외는 단순한 문법 오류가 아닌 실행 중간에 발생하는 ‘정상적이지 않은 상황’이다.
2) 예외처리는 성능의 저하로 이어진다.
try ~ catch
1) 자바는 예외 상황별로 그 상황을 알리기 위한 클래스를 정의하고 있다.(예외 클래스)
try{
관찰영역...
}
catch(예외처리 클래스 e) {
처리영역...
}
2) try 문에서 예외가 발생하면 catch 영역에서 예외 처리가 된 후 try~catch문 밖으로 나 간다.
3) 둘 이상의 예외처리문도 가능하다. (catch문을 두번 쓰거나 |로 연결)
catch(AtrithmeticException | InputMismatchException e)
Throwable 클래스와 예외처리의 책임전가
1) 예외 클래스의 최상위 클래스는 java.lang.Throwable 이다.
2) 예외처리의 책임이 넘어가면 예외처리의 책임을 넘긴 메소드의 호출은 종료가 된다.
예외 상황을 알리기 위해 정의된 클래스의 종류
1) ArrayIndexOutOfBoundsException : 배열접근에 잘못된 인덱스 값 사용
2) ClassCast : 허용할 수 없는 형 변환을 강제로 진행한 경우
3) NullPointer : null이 저장된 참조변수를 대상으로 메소드를 호출할 때 발생
예외 클래스의 구분
1) Error 클래스를 상속하는 예외 클래스
(1) VirtualMachineError : 가상머신에 심각한 오류 발생
(2) IOError : 입출력 관련해서 코드수준 복구가 불가능한 오류 발생
(3) Error클래스를 상속하는 예외는 처리대상이 아니다.(코드수준을 벗어남)
2) Exception 클래스를 상속하는 예외 클래스
(1) Exception 클래스를 상속하는(그러나 RuntimeException을 상속하지는 않는) 예외는 try~catch 문으로 처리하거나 다른 영역으로 넘긴다고 반드시 명시해야 한다.
3) RuntimeException 클래스를 상속하는 예외 클래스
프로그래머가 정의하는 예외
1) 프로그래머가 정의하는 예외클래스는 Exception을 상속하는 것이 핵심이다.
finally 구문
1) finally 구문은 코드의 실행이 try 안으로 진입하면 무조건 실행이 된다.
2) try에서 예외가 발생하건 안하건, catch가 실행되건 안되건, 무조건 실행된다.
try{},catch{},finally{}
try-with-resources 구문
try(resource){
}
catch(Exception name){
}
1) try 옆 () 은 종료의 과정을 필요로 하는 리소스를 생성할 수 있다.
2) 이 리소스는 try-with-resources문을 빠져나오면서 자동으로 종료가 된다.
3) 여러 개를 사용할 때믄 세미콜론으로 리소스를 구분하면 된다.
Object 클래스 – finalize 메소드 / 인스턴스 소멸 시 해야 할 일이 있다면
1) 아무도 참조하지 않는 인스턴스가 가비지 컬렉션에 의해 소멸되기 전에 자동으로 호출되 는 메소드이다.
protected void finalize() throws Throwable
2) 가비지 컬렉션을 강제로 진행하지 말 것
Object 클래스 – equals 메소드 / 인스턴스의 비교
1) == 연산자는 참조변수의 참조값을 비교하므로, 내용을 비교하려면 별도의 방법이 필요
2) equals 메소드는 내용 비교가 이뤄지도록 오버라이딩 하라고 존재하는 메소드이다.
Object 클래스 – clone 메소드 / 인스턴스 복사(복제)
1) Cloneable 인터페이스를 구현해야 한다. (implements)
2) Cloneable 은 마커 인터페이스 이다.
3) 메소드 오버라이딩을 통해서 접근 범위를 넓히는 것이 가능하다.(protected > public)