본문 바로가기

자바

Day08

추상 클래스(abstract class) : 완성되지 못한 채로 남겨진 설계도를 의미하며, 인스턴스는 생성할 수 없다. 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상 클래스로부터 상속받는 자손클래스는 오버라이딩을 통해 조상인 추상클래스의 추상 메서드를 모두 구현해주어야 한다. 만일 조상으로부터 상속받은 추상메서드 중 하나라도 구현하지 않는다면, 자손클래스 역시 추상 클래스로 지정해주어야한다. 

상속이 자손 클래스를 만드는데 조상 클래스를 사용하는 것이라면, 이와 반대로 추상화는 기존의 클래스의 공통부분을 뽑아내서 조상 클래스를 만드는 것이라고 할 수 있다. 

 

인터페이스 : 일종의 추상클래스로 오직 추상 메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 혀용하지 않는다. 인터페이스는 구현된 것은 아무 것도 없고 밑그림만 그려져 있는 기본 설계도라 할 수 있다.

인터페이스의 작성은

package com.test02;
interface IStudent {  public void study();} //표준적인 요소만 디자인
class Student implements IStudent{
	public void study() { // 
		System.out.println("학생이 공부하다.");
	}
}
public class Sample02 {
	public static void main(String[] args) {
		Student stu = new Student();
		stu.study();
		IStudent a = new Student();
		a.study();
	}
}

인터페이스는 인터페이스로만 상속받을 수 있으며, 클래스와는 달리 다중상속, 즉 여러 개의 인터페이스로부터 상속을 받는 것이 가능하다. 

인터페이스도 역시 해당 인터페이스 타입의 참조변수로 이를 구현한 클래스의 인스턴스를 참조할 수 있으며, 인터페이스의 타입으로 형변환도 가능하다. 

** 리턴타입이 인터페이스라는 것은 메서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환하는 것을 의미한다.

인터페이스의 장점 : -개발 시간을 단축시킬 수 있다. -표준화가 가능하다. - 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다. -독립적인 프로그래밍이 가능하다.

 

예외처리 : 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다.

컴파일 에러 : 컴파일 시에 발생하는 에러 / 런타임 에러 : 실행 시에 발생하는 에러 / 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 

에러 : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류

예외 : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

Exception클래스들 - 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외

RuntimeException - 프로그래머의 실수로 발생하는 예외 

 

예외처리하기 : 정의 - 프로그램 실행시 발생할 수 있는 예외에 대비한 코드를 작성하는 것

                   목적-  프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것

try - catch 문 : 하나의 try블럭 다음에는 여러 종류의 예외를 처리할 수 있도록 하나 이상의 catch블럭이 올 수 있으며, 이 중 발생한 예외의 종류와 일치하는 단 한 개의 catch 블럭만 수행된다. 발생한 예외의 종류와 일치하는 catch 블럭이 없으면 예외는 처리되지 않는다. 

try - catch문에서의 흐름 : try블럭 내에서 예외가 발생한 경우 - 1.발생한 예외와 일치하는 catch블럭이 있는지 확인한다. 2.일치하는 catch 블럭을 찾게 되면, 그 catch 블럭 내의 문장들을 수행하고 전체 try-catch문을 빠져나가서 그 다음 문장을 계속해서 수행한다. 만일 일치하는 catch블럭을 찾지 못하면, 예외는 처리하지 못한다.

try블럭 내에서 예외가 발생하지 않은 경우 - 1.catch블럭을 거치지 않고 전체 try-catch 문을 빠져나가서 수행을 계속한다. 

printStacktrace()  : 예외발생 당시의 호출스택(call stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다.

getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다. 

예외 발생시키기 : 키워드 throw를 사용해서 프로그래머가 고의로 예외를 발생시킬 수 있다.

1. 먼저, 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음 - Exception e = new Exception("고의로 발생시켰음"); 2. 키워드 throw를 이용해서 예외를 발생시킨다. throw e; 

이 2줄의 코드를 한줄로 만들면 -> throw new Exception("고의로 발생키켰음"); 으로 만들 수 있다.

메서드에 예외 선언하기 위해서 throws를 사용해서 여러가지의 예외들을 ','로 구분하여 작성해준다. 

 

'자바' 카테고리의 다른 글

2주차 은행 계좌 예제 수정  (0) 2021.05.16
Day09  (0) 2021.05.14
Day07  (0) 2021.05.13
Day06  (0) 2021.05.11
Day05  (0) 2021.05.10