SlideShare a Scribd company logo
1 of 10
Download to read offline
JAVA Inner Class
작성자 : 홍효상
이메일 : hyomee@naver.com
소스 : https://github.com/hyomee/JAVA_EDU
프로그램은 사람이 이해하는 코드를 작성.
느려도 꾸준하면 경기에서 이긴다.
Content
소스 : https://github.com/hyomee/JAVABASIC
9. Inner Class
1. Inner Class
2. 익명(Anonymous) Inner Class
3. Inner Interface
1. Inner Class
9. Inner Class
• Instance Member Inner Class, Static Member Inner Class, Local Inner Class가있다.
• Class Member 처럼 사용 하는 Instance Member Inner Class, Static Member Inner Class
• Method내부에서 한정적으로 사용 하는 Local Inner Class
“ Class 내부에 Class가 있는 Class”
9-1. Inner Class
종류
Instance Member Inner Class
Static Member Inner Class
Local Inner Class
Inner Interface : class 를 interface로 만든 것
익명(Anonymous) Class
2. Instance Member Inner Class
9. Inner Class
• 객체 내부에 있는 클래스로 Instance Member의 특성을 가지고 있다.
• 모든 접근 지정자를 사용 할 수 있으며 실제로는 Outer Class 이다. ( 클래스$이너클래스 )
9-1. Inner Class
01. 인스턴스화
Instance Member Inner Class
Instance Member Inner Class
① 클래스 생성
② 클래스.이너클래스 참조변수
= 클래스.new 이너클래스()
으로 생성
02. 이너 클래스 에서 외부 클래스 사용
① 외부클래스.this. 으로 외부 클래스의 멤버, 메서드 사용
- 하나의 파일 ( ,java )내부 이너클래서에서 외부 클래스를 호출 하는 경우
new 로 생성 할 필요 가 없다.
외부클래스명.this.멤버
외부클래스명.this.메서드
03. 이너 클래스 에서 이너 클래스 사용
① 동일 파일이 아니거나 동일 파일 내의 다른 이너 클래스를 사용 할 경우는 일반적인 클래스 생성
과 동일 하게 선언을 하여 사용 해야 한다.
2. Static Member Inner Class
9. Inner Class
• 객체 내부에 있는 클래스로 Static Member의 특성을 가지고 있다.
• 객체를 생성 하지 않고 바로 사용 한다.
• 정적 이너 클래스는 아우터 클래스의 정적 멤버, 메서드만 사용 가능 하다.
9-1. Inner Class
Static Member Inner Class
02. 인스턴스화
01. static 메서드, 멤버 사용
① 클래스 생성 없이 직접 사용
: 클래스.메서드
① 클래스 생성
② 클래스.이너클래스 참조변수
= new 클래스.이너클래스()
으로 생성
03. 이너 클래스 에서 이너클래스 및 외부 클래스 사용
① static inner class는 static 클래스 멤버, 메서드만 호출 할 수 있다.
static Member Inner Class
X
외부클래스명.static멤버
외부클래스명.static 메서드
3. Local Member Inner Class
9. Inner Class
• 메서드 내부에 선언 하는 클래스
• 메서드가 호출 될 때만 메모리에 생성되므로 static class로 사용 할 수 없다.
9-1. Inner Class
Local Member Inner Class
01. Local Inner Class 생성
① Method 내부에 생성 Local Inner Class
02. Local Inner Class 인스턴스화
① 외부 클래스 사용시 new 연산자로 생성 하여 사용
② Method 내부에 객체 생성 하여 사용
1. 익명(Anonymous) Class
9. Inner Class
• 프로그램에서일시적으로한번만사용되고버려지는객체를매번객체를만들어야하나?
• 확장성을고려해서객체를생성해야하는데…수정이편할까?
• 사용처:인스턴스변수,인스턴스메서드,인스턴스메소드의매개변수
“ 이름을 알 수 없는 객체로 한번만 사용하고 버려지는 객체 ”
9-2. 익명(Anonymous) Inner Class
사용하는 이유
• 클래스생성
• 인터페이스의구현
구현 하는 방법
01. 클래스생성
➢ 1.추상클래스생성 예제 : AnonymousAbstract.java
➢ 2. 추상클래스 구현 Class 생성
예제 : AnonymousAbstarctClass.java - 인스턴스 변수
익명(Anonymous) Class
• 클래스를정의하지않고필요할때이름없이즉시선언하고인스턴스화해서사용
• 객체안에만드는로컬클래스와동일하다
• new수식이올수있는곳어디든지사용가능하나생성자는정의할수없음
• 익명클래스내부에서외부의메소드내변수를참조할때는메소드의지역변수중
final로선언된변수만참조가능
-변수는Stack에있고객체는Heap에있음,즉Method실행이끝나고Stack는사라지지만
Heap에있는Method는사라지지않기때문
1. 익명(Anonymous) Class
9. Inner Class
9-2. 익명(Anonymous) Inner Class
➢ 2.추상클래스 구현 Class 생성
예제 : AnonymousAbstarctClass.java - 인스턴스 Method
예제 : AnonymousAbstarctClass.java - 인스턴스 메서드의 파라메터
➢ 3. 실행
➢ 2. 추상클래스 구현 Class 생성
예제 : AnonymousMain.java
파라메터로 객체 생성 하여 파라메터로 전달
예제 : AnonymousChild .java 참조
1. 익명(Anonymous) Class
9. Inner Class
9-2. 익명(Anonymous) Inner Class
02. 인터페이스의구현
➢ 1. 인터페이스구현
예제 : AnonymousInterface.java
➢ 2. 인터페이스구현체
예제 : AnonymousInterfaceClass.java
➢ 3. 실행
익명 객체 생성
람다 생성
1. Inner Interface
9. Inner Class
• 정적이너클래스만존재
• static 생략시자동으로추가됨
“ 정적(static) Inner Interface만 존재 ”
9-3. Inner Interface
Inner Interface
01. Interface Inner Class 생성
① Method 내부에 생성
- static 생략 하면 자동으로 추가 됨
02. 인스턴스화
① 클래스 생성
② 클래스.이너클래스 참조변수
= 클래스.new 이너클래스()
으로 생성
Interface Inner Class
03. 이너 클래스 에서 외부 클래스 사용
① 외부클래스.this. 으로 외부 클래스의 멤버, 메서드 사용
- 하나의 파일 ( ,java )내부 이너클래서에서 외부 클래스를 호출 하는 경우
new 로 생성 할 필요 가 없다.

More Related Content

What's hot

The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표
재정 이
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
Yong Joon Moon
 
9 object class
9 object class9 object class
9 object class
웅식 전
 

What's hot (18)

Python class
Python classPython class
Python class
 
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
 
10 data nested_classes
10 data nested_classes10 data nested_classes
10 data nested_classes
 
파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기
 
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 
The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdf
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
 
Java(1/4)
Java(1/4)Java(1/4)
Java(1/4)
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)
 
Start IoT with JavaScript - 7.프로토타입
Start IoT with JavaScript - 7.프로토타입Start IoT with JavaScript - 7.프로토타입
Start IoT with JavaScript - 7.프로토타입
 
Java(2/4)
Java(2/4)Java(2/4)
Java(2/4)
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편
 
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편주니어 개발자도 이해 할 수 있는 Go - Namespace 편
주니어 개발자도 이해 할 수 있는 Go - Namespace 편
 
9 object class
9 object class9 object class
9 object class
 
Java script
Java scriptJava script
Java script
 
Ksug2015 - JPA1, JPA 소개
Ksug2015 - JPA1, JPA 소개Ksug2015 - JPA1, JPA 소개
Ksug2015 - JPA1, JPA 소개
 
Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑Ksug2015 - JPA2, JPA 기초와매핑
Ksug2015 - JPA2, JPA 기초와매핑
 

More from Hong Hyo Sang (12)

Javascript
JavascriptJavascript
Javascript
 
Java_10 람다
Java_10 람다Java_10 람다
Java_10 람다
 
Java_08 collection
Java_08 collectionJava_08 collection
Java_08 collection
 
Java_07 제너릭 메서드
Java_07 제너릭 메서드Java_07 제너릭 메서드
Java_07 제너릭 메서드
 
Java_03 연산자
Java_03 연산자Java_03 연산자
Java_03 연산자
 
Java_06 상속
Java_06 상속Java_06 상속
Java_06 상속
 
Java_05 class
Java_05 classJava_05 class
Java_05 class
 
Java_04 제어
Java_04 제어Java_04 제어
Java_04 제어
 
Java_02 변수자료형
Java_02 변수자료형Java_02 변수자료형
Java_02 변수자료형
 
Java_01 기초
Java_01 기초Java_01 기초
Java_01 기초
 
Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드 Java 이해하기 쉬운 코드
Java 이해하기 쉬운 코드
 
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙
 

Recently uploaded

Recently uploaded (6)

이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
 
TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
 
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
 

Java_09 이너클래스

  • 1. JAVA Inner Class 작성자 : 홍효상 이메일 : hyomee@naver.com 소스 : https://github.com/hyomee/JAVA_EDU 프로그램은 사람이 이해하는 코드를 작성. 느려도 꾸준하면 경기에서 이긴다.
  • 2. Content 소스 : https://github.com/hyomee/JAVABASIC 9. Inner Class 1. Inner Class 2. 익명(Anonymous) Inner Class 3. Inner Interface
  • 3. 1. Inner Class 9. Inner Class • Instance Member Inner Class, Static Member Inner Class, Local Inner Class가있다. • Class Member 처럼 사용 하는 Instance Member Inner Class, Static Member Inner Class • Method내부에서 한정적으로 사용 하는 Local Inner Class “ Class 내부에 Class가 있는 Class” 9-1. Inner Class 종류 Instance Member Inner Class Static Member Inner Class Local Inner Class Inner Interface : class 를 interface로 만든 것 익명(Anonymous) Class
  • 4. 2. Instance Member Inner Class 9. Inner Class • 객체 내부에 있는 클래스로 Instance Member의 특성을 가지고 있다. • 모든 접근 지정자를 사용 할 수 있으며 실제로는 Outer Class 이다. ( 클래스$이너클래스 ) 9-1. Inner Class 01. 인스턴스화 Instance Member Inner Class Instance Member Inner Class ① 클래스 생성 ② 클래스.이너클래스 참조변수 = 클래스.new 이너클래스() 으로 생성 02. 이너 클래스 에서 외부 클래스 사용 ① 외부클래스.this. 으로 외부 클래스의 멤버, 메서드 사용 - 하나의 파일 ( ,java )내부 이너클래서에서 외부 클래스를 호출 하는 경우 new 로 생성 할 필요 가 없다. 외부클래스명.this.멤버 외부클래스명.this.메서드 03. 이너 클래스 에서 이너 클래스 사용 ① 동일 파일이 아니거나 동일 파일 내의 다른 이너 클래스를 사용 할 경우는 일반적인 클래스 생성 과 동일 하게 선언을 하여 사용 해야 한다.
  • 5. 2. Static Member Inner Class 9. Inner Class • 객체 내부에 있는 클래스로 Static Member의 특성을 가지고 있다. • 객체를 생성 하지 않고 바로 사용 한다. • 정적 이너 클래스는 아우터 클래스의 정적 멤버, 메서드만 사용 가능 하다. 9-1. Inner Class Static Member Inner Class 02. 인스턴스화 01. static 메서드, 멤버 사용 ① 클래스 생성 없이 직접 사용 : 클래스.메서드 ① 클래스 생성 ② 클래스.이너클래스 참조변수 = new 클래스.이너클래스() 으로 생성 03. 이너 클래스 에서 이너클래스 및 외부 클래스 사용 ① static inner class는 static 클래스 멤버, 메서드만 호출 할 수 있다. static Member Inner Class X 외부클래스명.static멤버 외부클래스명.static 메서드
  • 6. 3. Local Member Inner Class 9. Inner Class • 메서드 내부에 선언 하는 클래스 • 메서드가 호출 될 때만 메모리에 생성되므로 static class로 사용 할 수 없다. 9-1. Inner Class Local Member Inner Class 01. Local Inner Class 생성 ① Method 내부에 생성 Local Inner Class 02. Local Inner Class 인스턴스화 ① 외부 클래스 사용시 new 연산자로 생성 하여 사용 ② Method 내부에 객체 생성 하여 사용
  • 7. 1. 익명(Anonymous) Class 9. Inner Class • 프로그램에서일시적으로한번만사용되고버려지는객체를매번객체를만들어야하나? • 확장성을고려해서객체를생성해야하는데…수정이편할까? • 사용처:인스턴스변수,인스턴스메서드,인스턴스메소드의매개변수 “ 이름을 알 수 없는 객체로 한번만 사용하고 버려지는 객체 ” 9-2. 익명(Anonymous) Inner Class 사용하는 이유 • 클래스생성 • 인터페이스의구현 구현 하는 방법 01. 클래스생성 ➢ 1.추상클래스생성 예제 : AnonymousAbstract.java ➢ 2. 추상클래스 구현 Class 생성 예제 : AnonymousAbstarctClass.java - 인스턴스 변수 익명(Anonymous) Class • 클래스를정의하지않고필요할때이름없이즉시선언하고인스턴스화해서사용 • 객체안에만드는로컬클래스와동일하다 • new수식이올수있는곳어디든지사용가능하나생성자는정의할수없음 • 익명클래스내부에서외부의메소드내변수를참조할때는메소드의지역변수중 final로선언된변수만참조가능 -변수는Stack에있고객체는Heap에있음,즉Method실행이끝나고Stack는사라지지만 Heap에있는Method는사라지지않기때문
  • 8. 1. 익명(Anonymous) Class 9. Inner Class 9-2. 익명(Anonymous) Inner Class ➢ 2.추상클래스 구현 Class 생성 예제 : AnonymousAbstarctClass.java - 인스턴스 Method 예제 : AnonymousAbstarctClass.java - 인스턴스 메서드의 파라메터 ➢ 3. 실행 ➢ 2. 추상클래스 구현 Class 생성 예제 : AnonymousMain.java 파라메터로 객체 생성 하여 파라메터로 전달 예제 : AnonymousChild .java 참조
  • 9. 1. 익명(Anonymous) Class 9. Inner Class 9-2. 익명(Anonymous) Inner Class 02. 인터페이스의구현 ➢ 1. 인터페이스구현 예제 : AnonymousInterface.java ➢ 2. 인터페이스구현체 예제 : AnonymousInterfaceClass.java ➢ 3. 실행 익명 객체 생성 람다 생성
  • 10. 1. Inner Interface 9. Inner Class • 정적이너클래스만존재 • static 생략시자동으로추가됨 “ 정적(static) Inner Interface만 존재 ” 9-3. Inner Interface Inner Interface 01. Interface Inner Class 생성 ① Method 내부에 생성 - static 생략 하면 자동으로 추가 됨 02. 인스턴스화 ① 클래스 생성 ② 클래스.이너클래스 참조변수 = 클래스.new 이너클래스() 으로 생성 Interface Inner Class 03. 이너 클래스 에서 외부 클래스 사용 ① 외부클래스.this. 으로 외부 클래스의 멤버, 메서드 사용 - 하나의 파일 ( ,java )내부 이너클래서에서 외부 클래스를 호출 하는 경우 new 로 생성 할 필요 가 없다.