Object obj = new Circle(10); System.out.println(obj);
class Circle extends Object {
// 오브젝트는 모든 함수의 조상이기 때문에 클래스를 만들지 않아도 자동으로 생성
private double r;
public Circle(double r) {
this.r = r;
}
public double getArea() {
return r * r * Math.PI;
}
@Override
public String toString() { // 오브젝트 클래스의 toString 함수를 Circle 클래스가 오버라이딩 함 - 원래 오브젝트 클래스의 toString 함수는 주소값 출력
return "넓이는 " + getArea() + "입니다.";
}
}
public class printProgram3 {
public static void main(String[] args) {
Object obj = new Circle(10);
System.out.println(obj);
}
}
Annotation(주석): @Override
오버라이딩 하라고 좀 더 명확하게 개발자들에게 알려주는 것
컴파일시 에러 등을 발생시켜 경고나 확인을 하는 목적으로 사용한다. → 안전성을 위한 것 @Override 는 현재 메소드가 부모 클래스의 메소드를 오버라이드 한 것임을 컴파일러에게 명시하고, 부모 클래스에 해당하는 메소드가 없다면 에러를 발생시킨다.
추상의 의미. abstract 키워드는 생략 가능(컴파일러 자동 생성)
인터페이스 내에 있는 함수의 body부분이 없고 선언 부분만 있기 때문에 구현은 자손 클래스에서 해야한다.
그렇기 때문에 인터페이스는 객체를 만들 수 없다.
try { int num = 6 / 0; } catch (Exception e) { e.printStackTrace(); } catch (InputMismatchException e) { e.printStackTrace(); }
예외 처리의 기본적인 문장 구성이다.
실행의 흐름이 try 구문 안에 들어왔을 때 반드시 실행 해야 하는 문장을 finally 구문에 둘 수 있다.
finally는 앞의 try-catch에서 성공을 하든 실패를 하든 무조건 실행한다.