230728 TIL Chapter 13. 추상 ( Abstract ) , 인터페이스 ( Interface ) , 예외 처리 ( Exception Handling )

최규연·2023년 7월 28일
0

TIL

목록 보기
13/57

오늘은 다형성에서 추상부터!!!

추상 Abstract

추상클래스 Abstract class

  • 미완성 메소드(추상 메서드)를 보유하고 있는 클래스
  • 객체로 만들면 안되는 클래스 -> 여러 타입들을 관리하기 위한 상위 타입의 목적. 즉, 객체로 생성하여 사용하기 위한 목적이 아니다.

몸체 없는 메소드를 포함한 클래스 (미완성 설계도)
추상 클래스일 경우 클래스 선언부에 abstract키워드 사용

[접근제한자] abstract class 클래스명 {}

몸체 없는 메서드
추상 메서드의 선언부에 abstract키워드 사용
상속 시 반드시 구현해야 하는, 오버라이딩이 강제화 되는 메서드다.

[접근제한자] abstract 반환형 메소드명(자료형 변수명);

추상 클래스는 new연산자를 통해 직접적인 객체 생성은 불가능 하지만 상속 받은 객체 생성 시 내부 부모 부분이 생성 될 떄 사용된다.

장점으로는 상속 받은 자식에게 공통된 멤버를 제공하고 일부 기능의 구현을 강제화한다. (공통적이나 자식 클래스에 따라 재정의 되어야 하는 기능)


인터페이스 Interface

인터페이스는 상수형 필드와 추상 메소드만을 작성할 수 있는 추상 클래스의 변형체로 메소드의 통일성을 부여하기 위해 추상 메소드만 따로 모아놓은 것으로써 상속 시 인터페이스 내에 정의된 모든 추상메소드를 구현해야함.

[접근제한자] interface 인터페이스명 {
	//상수도 멤버로 포함할 수 있음
	public static final 자료형 변수명 = 초기값;

	//추상 메소드만 선언 가능
	[public abstract] 반환자료형 메소드명([자료형 매개변수]);
	//public abstract가 생략되기 때문에
	//오버라이딩 시 반드시 public 표기해야 함
}

인터페이스 특징

  • 모든 인터페이스의 메소드는 묵시적으로 public abstract
  • 변수는 묵시적으로 public static final
  • 객체 생성은 안되지만 참조형 변수로는 가능하다. (다형성)

장점으로는 다형성을 이용해 상위 타입 역할(자식 객체 연결)이 가능해지고 인터페이스 구형 객체에 공통된 기능 구현을 강제화 한다. ( == 구현 객체간의 일관성 제공)
공동 작업(팀 프로젝트)을 위한 인터페이스 제공이 가능하다.


추상 클래스와 인터페이스 비교


예외 처리 Exception Handling

프로그램 수행 시 치명적인 상황이 발생하여 비정상 종료 상황이 발생한 것, 프로그램 에러라고도 한다.

오류의 종류

  • 컴파일 에러 : 프로그램의 실행을 막는 소스 코드상의 문법 에러. 소스코드 수정으로 해결 가능
  • 런타임 에러 : 프로그램 실행 중 발생하는 에러. 주로 if문 사용으로 에러 해결 가능
  • 시스템 에러 : 컴퓨터 오작동으로 인한 에러, 소스 코드 수정으로 해결 불가

개발자가 해결할 수 있는 애러는 컴파일 에러와 런타임 에러이다.

오류 해결 방법

소스 코드 수정으로 해결 가능한 에러를 예외(Exception)이라고 하는데 이러한 예외 상황(예측 가능한 에러) 구문을 처리하는 방법인 예외 처리를 통해 해결

예외 처리 방법

  1. Exception이 발생한 곳에서 직접 처리
    try ~ catch문을 이용하여 예외처리
  • try : Exceptiond 발생할 가능성이 있는 코드를 안에 기술

  • catch : try 구문에서 Exception 발생 시 해당하는 Exception에 대한 처리 기술 여러개의 Exception 처리가 가능하나 Exception간의 상속 관계를 고려해야 함

  • finally : Exception발생 여부와 관계없이 꼭 처리해야 하는 로직 기술 중간에 return문을 만나도 finally 구문은 실행되지만 System.exit();를 만나면 무조건 프로그램 종료
    주로 java.io나 java.sql 패키지의 메소드 처리 시 사용

  1. Exception 처리를 호출한 메소드에게 위임
    메소드 선언 시 throws Exception 명을 추가하여 호출한 상위 메소드에게 처리 위임 단, 계속 위임하면 main() 메소드까지 위임하게 되고 main()메소드에서도 처리가 되지 않으면 프로그램 비정상 종료된다.

0개의 댓글