내부 클래스
클래스 안에 클래스를 만드는 것으로, 내부 클래스는 외부 클래스의 멤버를 자신의 멤버인 것처럼 사용할 수 있다.
왜 쓰는가?
- 내부에 클래스를 감추어 캡슐화 하여, 리버스 엔지니어링을 방지하기 위함
인스턴스 클래스
외부 클래스의 멤버의 위치에 선언한다. 외부 클래스의 인스턴스 멤버 처럼 다뤄진다.
외부 클래스가 생성되면 생성가능하다.
class A {
class Innerinstance{}
}
static 클래스
외부 클래스의 멤버 위치에 선언한다. 외부클래스의 클래스(static) 멤버처럼 다뤄진다.
class A {
static class Innerstatic{}
}
지역 클래스
메서드 내부의 지역 변수의 위치에 선언한다. 지역 변수처럼 다뤄지며, 메서드 내부에서 사용됨.
class A {
void B() {
class InnerLocal{}
}
}
내부 클래스 생성방법
OuterClass oc = new OuterClass(); => 외부 클래스 생성
OuterClass.InnerClass ic = oc.new InnerClass(); => 외부 클래스를 통해 내부 클래스 생성
**클래스(static) 타입의 멤버는 인스턴스 타입의 멤버를 호출 및 사용 불가능함
익명 클래스
이름이 없는 클래스.
클래스를 생성하는 부분에서 클래스를 오버라이딩하여 사용하는 것이다.
중괄호 끝에 세미콜론을 붙여야한다.
A a1 = new A() {
//오버라이딩
};
익명 클래스 예시
public class OuterClass1 {
void a() {
System.out.println("method A");
}
void b() {}
}
public class Anonymous2 {
public static void main(String[] args) {
OuterClass1 o = new OuterClass1() {
void a() {
System.out.println("새롭게 정의한 익명 클래스의 메서드 입니다.");
}
};
o.a();
OuterClass1 ok = new OuterClass1();
ok.a();
}
}
'Back_end > JAVA' 카테고리의 다른 글
JAVA - 기본 API(Date, Calendar) (1) | 2024.09.27 |
---|---|
JAVA - 기본 API(문자열 클래스) (1) | 2024.09.26 |
JAVA - 예외처리 (0) | 2024.09.23 |
JAVA - 추상 클래스와 인터페이스 (0) | 2024.09.22 |
JAVA - 다형성 (0) | 2024.09.22 |