interface : 특별한 class : class의 한 종류
- abstract method로만 이루어진 특별한 class
- class 대신 interface 선언을 사용한다
-> 예) public interface Saram {}
- 변수는 final static 변수만 사용한다
- 정상적인 일반 메소드는 사용 못한다
- 메소드는 오직 abstract method만 사용 가능하다
- new를 통한 instance 생성이 불가능하다
- interface를 상속받는 클래스에게 abstract method의 구현을 강제한다
interface의 탄생 배경
-
abstract 메소드를 상속 시켜서 상속 받는 클래스에게
메소드 구현을 강제하고 싶은데 자바는 단일 상속만 가능
-
기능적으로는 abstract class와 같다
-
이미 상속을 받는 클래스에게 interface를 상속시켜서
-
상속 받는 클래스에게 메소드 구현을 강제하기 위해 만들어졌다
inner class : class 안에 class 있다
-
class 내부에 class 선언이 가능하다
-> 특수한 상황에서 사용한다 (일반적으로 많이 사용 되지는 않는다)
-> 클래스가 일회용으로 사용되는 경우
instance inner class : member inner class
- class의 멤버가 위치한 자리에 선언되는 inner class
- new를 통해 객체 생성
- 일반적인 class를 class 내부로 옮긴 형태를 갖는다
- 외부 클래스를 생성한 후에 inner class를 생성한다
예) OuterClass out = new OuterClass();
-> OuterClass.InnerClass in = out.new InnerClass();
static inner class : static member inner class
- instance inner class를 static로 선언한 것
- new 없이 자유로운 접근 가능
local inner class
- instance inner class를 메소드 안에 선언한 것
- 메소드가 실행되는 동안만 존재
- 메소드가 종료되면 없어진다
anonymous inner class
- 이름이 없는 inner class
- 이름이 없으므로, 재 사용 불가
- 일회용