[중첩클래스 및 상속, 다형성, 추상화, 인터페이스] 중첩클래스의 개요 및 종류
자바1. 중첩클래스의 개요 및 종류
(1) 개요
하나의 클래스 내부에 또 다른 클래스를 사용 하는 것
종류
일반, 정적, 지역, 익명(무명) 클래스
static / 지역변수
자바 안에 들어가는 구성 요소!
class A {
//멤버 필드
int a;
//생성자
A(){}
//멤버메소드
class B{
}
//중첩클래스
public void disp(){
2) 일반 중첩 클래스
일반 멤버 필드와 접근 방법이 동일
외부 클래스의 객체가 반드시 필요
내부에서 클래스의 사용이 빈번할 때 사용
3) 정적 중첩 클래스
static
*static메소드와 접근 방법이 동일 // static 멤버만 사용가능
*외부 클래스의 객체가 필요하지 않음
*인터페이스의 멤버로 사용이 가능함
static -> 객체생성 필요없음 , 클래스 이름으로 생성이 가능하다.
outer2$Inner2.class
$ -> 중첩클래스구나..
4) 지역중첩클래스 -> 지역변수(매개변수)
other3$1Inner3
other3$2Inner3
지역구분해주는 숫자/인덱스 번호
5) 익명(무명)중첩클래스 -> GUI구현
Exam_04$1.class
package ch08;
class Outer1{
private int a;
private static int b;
static {
b=20;
}
Outer1(){
a=10;
}
public void disp() {
System.out.println("a="+a);
System.out.println("b="+b);
//System.out.println("c="+Inner1.class); //아예 불가함
}
class Inner1{
private int c;
Inner1(){
c =30;
}
public void disp2() {
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
}
class Inner1_Inner1{}
}
}
public class Exam_01 {
public static void main(String[] args) {
Outer1 ot =new Outer1();
Outer1.Inner1 oi = ot.new Inner1();
oi.disp2();
}
}
-----------------------
a=10b=20
c=30
---------------------
---------------------------
package ch08;
class Outer2{
private int a;
private static int b;
static {
b=20;
}
Outer2(){
a=10;
}
public void disp() {
System.out.println("a="+a);
System.out.println("b="+b);
}
static class Inner2{
private int c;
Inner2(){
c =30;
}
public void disp2() {
//System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
}
}
}
public class Exam_02 {
public static void main(String[] args) {
Outer2 ot = new Outer2();
Outer2.Inner2 oi = new Outer2.Inner2();
oi.disp2();
}
}
----------------------------------
b=20
c=30
----------------
------------------
package ch08;
class Outer3{
private int a;
private static int b;
static {
b=20;
}
Outer3(){
a=10;
}
public void disp() {
class Inner3{
private int c;
Inner3(){
c = 30;
}
public void disp_in() {
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
}
}
Inner3 in = new Inner3();
in.disp_in();
}
}
public class Exam_03 {
public static void main(String[] args) {
Outer3 ot = new Outer3();
ot.disp();
}
}
--------------------------
a=10
b=20
c=30
------------------
package ch08;
class Outer4{
public void aaa() {
System.out.println("aaa메소드");
}
public void bbb() {
System.out.println("bbb메소드");
}
}
public class Exam_04 {
public static void main(String[] args) {
Outer4 ot = new Outer4() {
public void bbb() {
System.out.println("안녕하세요bbb메소드입니다");
}
};
ot.bbb();
}
}
======================
출력값: 안녕하세요bbb메소드입니다
-----------------------
메소드를 오버라이드해서 올리겠다.
인터페이스를 활용한 방법
익명중첩페이스
'자바' 카테고리의 다른 글
| [중첩 클래스 및 상속, 다형성, 추상화, 인터페이스] 상속 (0) | 2018.09.17 |
|---|---|
| [중첩클래스 및 상속, 다형성, 추상화, 인터페이스] 클래스기초2 (0) | 2018.09.12 |
| [중첩 클래스 및 상속, 다형성, 추상화, 인터페이스 ] 클래스 기초 1 (0) | 2018.09.10 |
| [배열과 메소드] 메소드의 개요 (0) | 2018.09.10 |
| [배열과 메소드]배열의 개요 (0) | 2018.09.10 |