- 인터페이스(Interface) : 서비스목록이지만 구현체가 아니다. 약속된 규약 정의, 구현 클래스가 존재해야 사용 가능, Reference Type
구성 요소 : 멤버필드 à public final static 만 정의됨.
멤버메서드 à abstract 메서드만 정의됨.
접근 지정자
AccessModifier interface 인터페이스이름 { 멤버필드.. 멤버메서드..}
Public
(default)
AccessModifier interface 인터페이스이름 extends 부모인터페이스, 인터페이스1, 인터페이스2 { 멤버필드.. 멤버메서드..
Class 클래스이름 implements 인터페이스 이름{}}}
-인터페이스는 메서드의 매개변수로도 전달 가능하고 메서드의 리턴 타입으로 선언 가능하다.
인터페이스를 사용하는 장점: 개발시간을 단축시킬 수 있다, 표준화가 가능하다. 서로 관계없는 클래스들에 대해서 관계를 맺어주는 역할을 한다.
독립적 프로그래밍이 가능하다.
프로그램 오류
컴파일 오류 : 문법적, 규칙적 오류
실행시 오류(Runtime 오류): Error(프로그램 코드에 의해 수습될 수 없는 심각한 오류) 종류, Exception(수습 될 수 있는 가벼운 오류) 종류
ArrayIndexOutOfBoundsException, NullPointerException, ClassCastException
- 예외 처리
Try~catch~finally, throws.
Catch는 한번 이상 여러 번 선언 가능(단 수행은 하나의 catch만)
try{
예외가 발생될 가능성이 있는 문장
}catch(발생한 예외클래스 이름 객체){
예외 처리 문장;}
catch(발생한 예외클래스 이름 객체){
예외 처리 문장;
}finally{
항상 수행문장; // 리소스 정리작업
RunTimeException은 컴파일시에 오류발생 가능성에 대해서 체크하지 않음 à Unchecked Exception
컴파일시에 Checked Exception을 수행한다. 안정적 프로그램 처리를 위함.
Throws는 예외처리를 호출하는 쪽으로 전가하는 것.
- 사용자 정의 Exception 클래스
Public class 예외클래스이름 extends Exception{
멤버필드 선언;(초기화)
생성자 메서드(){}
예외처리시 필요한 메서드(){}
}
- 멤버 내부 클래스: 클래스내에 멤버로서 클래스를 선언 (GUI환경에서 내부클래스 사용하면 효율성이 좋음)
Static 내부클래스:
- 로컬 내부 클래스: 클래스의 메서드내에 클래스를 정의
익명클래스 : 이름없이 클래스에 대한 정의를 하고 동시에 생성
Public class 클래스이름{}
클래스이름():
Public class 클래스이름{
멤버필드
생성자 메서드(){}
메서드(){}
Class 클래스이름{ // 내부 멤버 클래스
멤버필드
생성자 메서드(){}
메서드(){}
}
}
** 내부클래스에서는 내부클래스를 포함하는 외부클래스의 객체 생성없이 접근이 가능하다.
** 내부클래스를 포함하는 외부클래스에서는 내부클래스의 멤버에 접근하려면 반드시 객체 생성해서 객체 로 접근해야한다.
** 내부클래스는 외부클래스의 멤버이므로 private,protected 선언이 가능하다.