SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
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 로 생성 할 필요 가 없다.

Contenu connexe

Tendances

[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance정연 최
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO
 
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields정연 최
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403Yong Joon Moon
 
파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기Yong Joon Moon
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11hungrok
 
10 data nested_classes
10 data nested_classes10 data nested_classes
10 data nested_classes정연 최
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편Darion Kim
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310Yong Joon Moon
 
파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131Yong Joon Moon
 
Python class
Python classPython class
Python classHerren
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기 Yong Joon Moon
 

Tendances (16)

Java lambda
Java lambdaJava lambda
Java lambda
 
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 
Java(1/4)
Java(1/4)Java(1/4)
Java(1/4)
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
 
파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 
Java(2/4)
Java(2/4)Java(2/4)
Java(2/4)
 
10 data nested_classes
10 data nested_classes10 data nested_classes
10 data nested_classes
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310
 
파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131
 
Java script
Java scriptJava script
Java script
 
Python class
Python classPython class
Python class
 
파이썬 함수 이해하기
파이썬 함수 이해하기 파이썬 함수 이해하기
파이썬 함수 이해하기
 

Plus de Hyosang Hong

MSA_기초자료.pdf
MSA_기초자료.pdfMSA_기초자료.pdf
MSA_기초자료.pdfHyosang Hong
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료Hyosang Hong
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Hyosang Hong
 
Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Hyosang Hong
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료Hyosang Hong
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Hyosang Hong
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙Hyosang Hong
 

Plus de Hyosang Hong (20)

MSA_기초자료.pdf
MSA_기초자료.pdfMSA_기초자료.pdf
MSA_기초자료.pdf
 
Java 연산자
Java 연산자Java 연산자
Java 연산자
 
Java generic
Java genericJava generic
Java generic
 
Java 제어
Java 제어Java 제어
Java 제어
 
Java collection
Java collectionJava collection
Java collection
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료
 
Map struct
Map structMap struct
Map struct
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙
 
Enum
EnumEnum
Enum
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료
 
Map struct
Map structMap struct
Map struct
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 

Java inner class

  • 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 로 생성 할 필요 가 없다.