오늘은 다형성에서 추상부터!!!
추상클래스 Abstract class
몸체 없는 메소드를 포함한 클래스 (미완성 설계도)
추상 클래스일 경우 클래스 선언부에 abstract키워드 사용
[접근제한자] abstract class 클래스명 {}
몸체 없는 메서드
추상 메서드의 선언부에 abstract키워드 사용
상속 시 반드시 구현해야 하는, 오버라이딩이 강제화 되는 메서드다.
[접근제한자] abstract 반환형 메소드명(자료형 변수명);
추상 클래스는 new연산자를 통해 직접적인 객체 생성은 불가능 하지만 상속 받은 객체 생성 시 내부 부모 부분이 생성 될 떄 사용된다.
장점으로는 상속 받은 자식에게 공통된 멤버를 제공하고 일부 기능의 구현을 강제화한다. (공통적이나 자식 클래스에 따라 재정의 되어야 하는 기능)
인터페이스는 상수형 필드와 추상 메소드만을 작성할 수 있는 추상 클래스의 변형체로 메소드의 통일성을 부여하기 위해 추상 메소드만 따로 모아놓은 것으로써 상속 시 인터페이스 내에 정의된 모든 추상메소드를 구현해야함.
[접근제한자] interface 인터페이스명 {
//상수도 멤버로 포함할 수 있음
public static final 자료형 변수명 = 초기값;
//추상 메소드만 선언 가능
[public abstract] 반환자료형 메소드명([자료형 매개변수]);
//public abstract가 생략되기 때문에
//오버라이딩 시 반드시 public 표기해야 함
}
인터페이스 특징
장점으로는 다형성을 이용해 상위 타입 역할(자식 객체 연결)이 가능해지고 인터페이스 구형 객체에 공통된 기능 구현을 강제화 한다. ( == 구현 객체간의 일관성 제공)
공동 작업(팀 프로젝트)을 위한 인터페이스 제공이 가능하다.
추상 클래스와 인터페이스 비교
프로그램 수행 시 치명적인 상황이 발생하여 비정상 종료 상황이 발생한 것, 프로그램 에러라고도 한다.
개발자가 해결할 수 있는 애러는 컴파일 에러와 런타임 에러이다.
소스 코드 수정으로 해결 가능한 에러를 예외(Exception)이라고 하는데 이러한 예외 상황(예측 가능한 에러) 구문을 처리하는 방법인 예외 처리를 통해 해결
try : Exceptiond 발생할 가능성이 있는 코드를 안에 기술
catch : try 구문에서 Exception 발생 시 해당하는 Exception에 대한 처리 기술 여러개의 Exception 처리가 가능하나 Exception간의 상속 관계를 고려해야 함
finally : Exception발생 여부와 관계없이 꼭 처리해야 하는 로직 기술 중간에 return문을 만나도 finally 구문은 실행되지만 System.exit();를 만나면 무조건 프로그램 종료
주로 java.io나 java.sql 패키지의 메소드 처리 시 사용