반응형
중첩 클래스 정의
* description : 특수클래스 -> 중첩 클래스 : 클래스안에 클래스
* 요약 :
* 클래스의 3요소 : 속성, 생성자, 함수
* 멤버 클래스 - 일반 속성 클래스 : 외부 클래스를 생성해야 내부 클래스를 사용가능
* 정적 속성 클래스 : 외부 클래스 생성없이 바로 사용 가능
* 로컬 클래스 - 함수(메소드) 안의 클래스 : 함수를 실행해야 사용 가능
public class Outer {
// TODO : 클래스의 3요소 = 속성, 생성자, 함수
// 생성자
public Outer() {
System.out.println("외부 클래스가 생성됨");
}
// TODO : 일반 속성 (내부)클래스
public class Attr {
// 생성자
public Attr() {
System.out.println("Attr 내부 클래스가 생성됨");
}
int field1; // 속성
void method1() {
}
}
// TODO : 정적 속성(내부) 클래스
static class Share {
// 생성자
public Share() {
System.out.println("Share 정적 객체가 생성됨");
}
int filed1; // 일반 속성
static int field2; // 정적 속성
void method1(){}; // 일반 함수
static void method2(){
System.out.println("정작함수가 실행됨");
}; // 정적 함수
}
// TODO : 로컬 클래스 : 함수 안의 클래스
void method(){
// TODO : 내부 클래스
class Local{
// 생성자
public Local() {
System.out.println("Local 객체가 생성됨");
}
int field1; // 속성
void method1(){}; // 함수
}
// Local 객체 생성
Local local = new Local();
local.field1 = 3; // 내부클래스 속성
local.method1(); // 내부클래스 함수
}
}
중첩클래스의 사용
public class OuterApplication {
public static void main(String[] args) {
// TODO : 외부클래스 : Outer 객체 생성
Outer outer = new Outer();
// TODO : 1) 일반 속성 내부 클래스 객체 생성
// 사용법 : 외부클래스.내부클래스 객체변수 = 외부객체.new 내부생성자함수();
Outer.Attr attr = outer.new Attr();
attr.field1 = 3; // 내부 클래스의 속성
attr.method1(); // 내부 클래스의 함수
// TODO : 2) 정적(공유) 속성 내부 클래스 객체 생성 없음 : 바로 호출
// 사용법 : 외부클래스.내부클래스.속성, 외부클래스.내부클래스.함수()
Outer.Share.field2 = 3; // 공유 내부 클래스의 공유속성 호출
Outer.Share.method2(); // 공유 내부 클래스의 공유함수 호출
// TODO : 3) 로컬 클래스 : 함수 안의 클래스
outer.method(); // 안에서 클래스 자동 생성됨
}
}
실행결과
외부 클래스가 생성됨
Attr 내부 클래스가 생성됨
정작함수가 실행됨
Local 객체가 생성됨
반응형
'Java > Java 이론' 카테고리의 다른 글
[JSP] Java Server Pages 란? (0) | 2024.07.03 |
---|---|
스레드(Thread) (0) | 2023.10.04 |
람다 함수 (0) | 2023.10.02 |
파일 클래스를 이용한 파일 출력 (0) | 2023.10.02 |
objectstream (0) | 2023.10.02 |