Object obj = new Circle(10);
System.out.println(obj);
final은 class에서 상속할 수 없는 class를 의미합니다
final키워드가 붙은 class는 extends 키워드로 다른 class를 상속할 수 없습니다.
final은 메소드에서 오버라이딩 할 수 없음을 의미합니다.
추상 클래스
interface
@Override 주석은 Java 컴파일러에게 수퍼 클래스의 메소드를 대체하려고 함을 알려줍니다.
추상의 의미. abstract 키워드는 생략 가능(컴파일러 자동 생성)
인터페이스 내에 있는 함수의 body부분이 없고 선언 부분만 있기 때문에 구현은 자손 클래스에서 해야한다.(자손이 구현!)
그렇기 때문에 인터페이스는 객체를 만들 수 없다.
try {
int num = 6 / 0;
} catch (Exception e) {
e.printStackTrace();
} catch (InputMismatchException e) {
e.printStackTrace();
}
try 블록의 코드가 예외없이 정상 실행되면 catch블록의 코드는 실행되지 않고 finally 블록의 코드를 실행합니다. 하지만 try 블록의 코드에서 예외가 발생하면 즉시 실행을 멈추고 catch 블록으로 이동하여 예외처리 코드를 실행합니다. 그리고 finally 블록의 코드를 실행합니다. (finally 블록은 생략 가능합니다.)
실시간 에러(런타임 에러)(Runtime Error)
컴파일 에러(Compile Error)
컴파일 에러가 좋습니다.
에러 메시지를 통해 에러가 발생한 부분을 확인해 비교적 쉽게 해결할 수 있기 때문입니다.
개발자가 실시간 에러를 냅니다.
하지만 반드시 처리 해야 하는 문장에서도 에러 뜰 수 있어서 finally 문장 안에서 try catch 해줄 수 있다.