Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[JAVA]외부 클래스와 내부 클래스(정적 클래스, 익명 클래스, 지역 클래스) 본문
Contents
접기
#핵심 요약
- 내부클래스
- 클래스 안에 선언한 클래스
- 내부 클래스 특징
- 내부 클래스에서 -> 외부 클래스 멤버에 접근 가능 (그 반대는 접근 불가)
- 내부 클래스 종류
- 인스턴스 클래스 (instance class) - 외부 클래스를 인스턴스화(객체생성) 해야 사용가능하다.
- 정적 클래스 (static class) - 메모리에 상주해있기 때문에 외부 클래스가 인스턴스화(객체생성) 하지 않아도 사용가능하다.
- 지역 클래스 (local class) - 메소드 안에 있는 클래스
- 익명 클래스 (anonymous class) - 추상클래스 객체 생성 시 사용한다. (추상클래스는 원래 객체 생성 불가)
- 익명클래스?
- 이름을 가지지 않는 클래스
- 선언과 동시에 객체 생성
- 일회용 클래스
#소스코드
외부클래스와 내부클래스 예제
// Java 프로그래밍 - 내부 클래스
class Outer {
public void print() {
System.out.println("Outer.print");
}
class Inner { //내부클래스
void innerPrint() {
Outer.this.print(); //내부클래스에서는 외부클래스에 접근가능함
}
}
//static -> 인스턴스화 하지 않아도 메모리에 생성된다.
static class InnerStaticClass { //정적클래스
void innerPrint() {
// Outer.this.print(); //정적클래스 자체는 메모리에 생성되지만 outer 클래스는 객체 생성이 안된 상태기 때문에 사용 불가하다.
}
}
public void outerMethod() {
class InnerLocal {
}
InnerLocal il1 = new InnerLocal();
}
}
abstract class Person {
public abstract void printInfo();
}
class Student extends Person {
public void printInfo() {
System.out.println("Student.printInfo");
}
}
public class Main {
public static void main(String[] args) {
// 외부 클래스
Outer o1 = new Outer();
// 내부 클래스 - 인스턴스
//인스턴스 클래스의 경우 외부클래스를 생성하고(new), 내부 클래스를 생성(new)해서 사용해주어야한다.
Outer.Inner i1 = new Outer().new Inner();
// 내부 클래스 - 정적 (정적클래스이기 때문에 Outer는 생성(new) 해주지 않아도 되며 클래스명. 으로 접근가능하다.)
Outer.InnerStaticClass is1 = new Outer.InnerStaticClass();
// 익명 클래스 (
Person p1 = new Person() {
@Override
public void printInfo() { //익명클래스 (추상메소드를 오버라이딩 할 때 사용)
System.out.println("Main.printInfo");
}
};
}
}
'공부 > JAVA' 카테고리의 다른 글
[JAVA]콘솔 입출력, 파일 입출력 (+printf 예제) (0) | 2024.04.20 |
---|---|
[JAVA]인터페이스 (0) | 2024.04.20 |
[JAVA]추상 클래스 (0) | 2024.04.13 |
Comments