SeSAC 11일차(2023-07-31)
자바 기초(인터페이스, 자바 예외 처리)
인터페이스
- 자바의 인터페이스
추상 메소드와 상수로만 이루어진 정의 (필드나 일반 메소드 정의 불가)
interface로 정의
- 인터페이스의 사용
인스턴스로 바로 생성 불가능
상속을 통해서 사용
다중 상속 가능
- 인터페이스 정의
추상 메소드와 정적 상수만 정의
외부에서의 접근으로 사용하므로 접근자는 public
abstract public과 public static final은 생략 가능
기본 형태)
접근지정자 interface 인터페이스이름 {
[abstract public] 추상메소드
[public static final] 상수
}
ex)
public interface OnDealig {
int CODE = 100;
abstract public boolean onAgreement();
void onDeal(int dealPrice);
}
- 인터페이스 사용
implements 상속을 통해서 인터페이스 생성 또는 익명 클래스로 생성
추상 메소드는 반드시 오버라이딩 되어야함
ex1)
public class Seller extends Member implements OnDealing {
…
@Override
public boolean onAgreement() {
sout(name + “님이 판매를 승인하였습니다.”);
return true;
}
@Override
public void onDeal(int dealPrice) {
setPoint(dealPrice);
}
}
ex2)
OnDealing onDealing = new OnDealing() {
…
@Override
public boolean onAgreement() {
sout(name + “님이 판매를 승인하였습니다.”);
return true;
}
@Override
public void onDeal(int dealPrice) {
setPoint(dealPrice);
}
}
- 인터페이스 메소드 실행
인터페이스 상속 인스턴스 또는 추상 클래스의 인스턴스를 실행 클래스에 제공 (set 메소드 활용 추천)
실행 클래스에서 인터페이스의 메소드를 실행
ex)
public class DealButton {
OnDealing onDealing;
public void setOnDealing(OnDealing onDealing) {
this.onDealing = onDealing;
}
public void agreement() {
onDealing.onAgreement();
}
public void deal(int dealPrice) {
onDealing.onDeal(dealPrice);
}
}
자바 예외 처리
오류와 예외
- 컴파일 오류
문법에 맞지 않게 작성된 코드이며 컴파일할 때 발견
- 예외(Exception)
오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류
ex)
정수를 0으로 나누는 경우, 존재하지 않는 파일을 읽으려고 하는 경우… 등
- Checked Exception
반드시 명시적인 예외 처리(try-catch나 throws)를 해야하는 예외
예외 처리
- try-catch-finally
예외가 발생할 때 프로그램이 중단되지 않고 예외를 제어
try {}: 예외 발생을 인지할 여역
catch (예외 타입) {}: try에서 해당 예외 타입을 발생했을 때 실행 영역
finally {}: 예외 발생 유무와 상관없이 실행될 영역
예외 타입은 수퍼클래스로 사용 가능 (RuntimeException, Exception)
ex1)
try {
String menu = null;
menu.substring(0, 3);
sout(”메뉴가 입력 되었습니다.”);
} catch (NullPointerException e) {
sout(”메뉴가 입력되지 않았습니다.”);
}
ex2)
try {
String menu = null;
menu.substring(0, 3);
sout(”메뉴가 입력 되었습니다.”);
} catch (RuntimeException e) {
sout(”메뉴가 입력되지 않았습니다.”);
} finally {
sout(”어서오세요”);
}
오늘의 실습 코드
https://github.com/yubin-im/SeSAC/tree/4a8c4f59ad2fb524fcf03111a802fd616cee29dd/20230731
'교육 (Today I Learned) > SeSAC' 카테고리의 다른 글
SeSAC 13일차 / 자료 구조(배열) (0) | 2023.08.03 |
---|---|
SeSAC 12일차 / 자바 기초(예외 처리), 자료구조(배열) (0) | 2023.08.02 |
SeSAC 10일차 / 자바 기초(오버라이딩, 인터페이스) (0) | 2023.07.29 |
SeSAC 9일차 / 자바 기초(클래스, 상속) (0) | 2023.07.28 |
SeSAC 8일차 / 자바 기초(조건문, 반복문, 클래스) (0) | 2023.07.27 |