34일 차 - 예외 처리(try catch finally문), 에러, 추상클래스(Abstract) (23.02.13)

yvonne·2023년 2월 13일
0

📂Java

목록 보기
34/51
post-thumbnail

1. 아래가 메인에서 되돌아 가도록 하시오.

	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);
	}
 }
  • 출력결과




2. class이름 및 함수에서 final의 의미는?

  • final class: 클래스가 마지막이다 → 더 이상 다른 클래스가 상속할 수 없다.
  • final method: 함수가 마지막이다. → 다른 클래스에서 overriding 할 수 없다.




3. interface 와 class 의 차이는?

📌interface

  • interface + interface명 ();→ 함수 선언부(정의), body없음 (당연히 생성자 만들 수 없음) = 추상메소드
  • implements 키워드로 인터페이스를 구현할 (자손)클래스 표시
  • 둘 이상의 다중 인터페이스 구현 가능 (implements A, B 쉼표로 구분)
  • body가 없으므로 객체 생성 불가, 선언 혹은 구현만 가능함
    무조건 public 이어야 한다.
  • 이름은 -able 혹은 I+이름으로 짓는 것이 관례

📌class

  • class + class명 () {body} → body 있음(함수, 변수 모두 올 수 있다.)
  • extends 키워드로 상속 표시함
  • 단일 상속만 가능함 (자식이 상속) / 다중 상속 안됨
    객체 생성 가능
    → interface와 class를 동시에 상속, 구현 가능




4. @Override 에 대하여 설명하시오.

  • Annotation(주석): @Override
    오버라이딩 하라고 좀 더 명확하게 개발자들에게 알려주는 것

  • 컴파일시 에러 등을 발생시켜 경고나 확인을 하는 목적으로 사용한다. → 안전성을 위한 것 @Override 는 현재 메소드가 부모 클래스의 메소드를 오버라이드 한 것임을 컴파일러에게 명시하고, 부모 클래스에 해당하는 메소드가 없다면 에러를 발생시킨다.





5. abstract 키워드에 대하여 설명하시오.

📌abstact:

  • 추상의 의미. abstract 키워드는 생략 가능(컴파일러 자동 생성)

  • 인터페이스 내에 있는 함수의 body부분이 없고 선언 부분만 있기 때문에 구현은 자손 클래스에서 해야한다.

  • 그렇기 때문에 인터페이스는 객체를 만들 수 없다.





6. 아래가 컴파일 에러가 나는 이유에 대하여 설명하시오.

try {
		int num = 6 / 0;
} catch (Exception e) {
		e.printStackTrace();
} catch (InputMismatchException e) {
		e.printStackTrace();
}

  • Exception이 InputMismatchException보다 상위 클래스에 위치하고 있으므로 모든 예외 상황을 체크할 수 있다. 그래서 여기에서 모든 예외가 처리 되기 때문에 세부 체크를 하는 InputMismatchException이나 ArithmeticException 등이 그 아래 catch로 온다면 사실상 그 문장을 통과할 일이 없기 때문에 불필요한 코드임을 알려주기 위해 에러가 난다.




7. 실시간 에러와 컴파일 에러의 차이는?





8. 실시간 에러와 컴파일 에러 중 누가 더 좋은 것인가?

  • 컴파일 에러는 실시간 에러 전에 인지하고 수정할 수 있기때문에 더 좋다.




9. 실시간 에러를 내는 주체는?





10. try catch finally에 대해 설명하시오.

  • 예외 처리의 기본적인 문장 구성이다.

  • 실행의 흐름이 try 구문 안에 들어왔을 때 반드시 실행 해야 하는 문장을 finally 구문에 둘 수 있다.

  • finally는 앞의 try-catch에서 성공을 하든 실패를 하든 무조건 실행한다.

profile
개발 연습장

0개의 댓글