티스토리 뷰
inner class / 중첩 클래스
중첩(이너)클래스(inner class = nested Class)
class A { //아우터클래스
변수,메소드,생성자..
class B{//중첩=이너클래스
변수,메소드,생성자..
}
}
중첩(이너)클래스 특징
1. Outer의 멤버 접근 가능 (private도 접근 가능)
2. 이너클래스 안에서는 static변수 사용불가 (이너클래스를 static으로만들면 사용가능)
class A { //아우터클래스
int num;
static class B{//중첩=이너클래스
static int num =3;
static으로 클래스 선언하고 static 멤버 선언해주면 .
static 멤버가 있으면 아우터 클래스의 멤버(num)에 접근 불가능
}
}
3. 이너클래스를 사용하려면 아우터클래스부터 생성해야함
(객체생성을 아우터클래스의 객체부터 new로 생성한 후 그다음 이너클래스의 객체생성후 사용가능)
4가지 중첩 클래스.
1.member inner class
class Outer{
int num;
public void a(){}
final int N =3;
class Inner{//멤버 이너클래스
public void a(){
이너클래스의 메소드 안에서 접근할수 있는 변수는 아우터클래스의 멤버만 접근가능 또는, 이너클래스의 멤버중 Final (상수)만 접근가능
}
}
}
2. local inner class
class Outer{
int num;
public void a(){
int x=3; //지역변수 (로컬변수)
class Inner{//로컬 이너클래스
이너클래스가 선언된 a(){} 메소드 안에서 선언해줘야함
로컬변수는 a()함수 끝나면 없어지기 때문에 마찬가지로 Inner클래스 정보도 없어짐
}
}
}
3.static inner class
class Outer{
int num;
static class Inner{//로컬 이너클래스
static int num =3;
static 멤버가 있으면 아우터 클래스의 멤버에 접근 불가능
}
}
}
4. 익명클래스 (anonymous class - 이름이 없는 중첩클래스를 의미) (가독성이 높음)
-인터페이스 구현하는 클래스로 쓰일 수 있음
-인터페이스명 변수명 = new 인터페이스명(){ 인터페이스안의 추상메소드들(오버라이딩해서) 구현
인터페이스내 메소드 오버라이딩-> public void a(){멤버변수와 final변수만 접근 가능(7까지) 자바8에서는 멤버변수도 가능}
};
클래스 안에 또다른 클래스를 넣는이유
: A클래스안에 B클래스가 들어있다면 B라는 클래스는 A라는 클래스에서만 사용한다는것임 - 이벤트구현시사용 - 복잡성 증가
----------------------------------------------------------------------
interface Flyer{
//public abstract void takeOff();
public void takeOff(); //abstract 생략
}
//1.일반크래스(이름있는클래스
class Bird implements Flyer{
@Override
public void takeOff() {
// TODO Auto-generated method stub
}
}
public class AnonyInnerTest {
public static void main(String[] args) {
//1.(일반적으로사용하는) 이름이있는클래스
Flyer b= new Bird();
int kkk=10;
//2. 익명클래스
Flyer f = new Flyer(){
int size =10; // Java 8버전은<왼쪽처럼그냥멤버와final까지접근가능//자바7까지는접근불가능
//final int size =10; // <<왼쪽처럼자바7까지는아우터멤버나final만접근가능
@Override
public void takeOff() {
System.out.print("dd");
System.out.print(size); //접근가능10
//System.out.print(kkk); //kkk접근불가에러
}
};
f.takeOff();
}
}
|
|
'It' 카테고리의 다른 글
Springi Hibernate 8-5 Hibernate 설정 (0) | 2022.10.26 |
---|---|
SysMaster , heap, garbage collection, ART, TPS, GC (0) | 2022.10.24 |
Eclipse GEF (0) | 2022.10.20 |
스레드 , 스레드란? (0) | 2022.10.18 |
JSP 랭킹구하기 / 순위 구하기 (0) | 2022.10.10 |
- Total
- Today
- Yesterday
- 엘리멘탈 다시보기
- 오늘의사건
- 엘리멘탈 고화질
- 박스오피스
- 추천영화
- 한국영화
- 미션 임파서블: 데드 레코닝 PART ONE 무료보기
- 미션 임파서블: 데드 레코닝 PART ONE 한글자막
- 영화추천
- 영화
- 엘리멘탈 마그넷
- 미션 임파서블: 데드 레코닝 PART ONE 정식자막
- 미션 임파서블: 데드 레코닝 PART ONE 바로보기
- 엘리멘탈 정식자막
- 엘리멘탈 바로보기
- 영화소개
- 외국영화
- 엘리멘탈 한글자막
- 엘리멘탈 무료보기
- 미션 임파서블: 데드 레코닝 PART ONE 다운로드
- 미션 임파서블: 데드 레코닝 PART ONE 예고편
- Movie
- 옛날영화
- 실시간검색어
- 실검
- 미션 임파서블: 데드 레코닝 PART ONE 토렌트
- 영화순위
- 오늘의이슈
- 엘리멘탈 다운로드
- 엘리멘탈 토렌트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |