IT story/Java

D+18 InnerClass

jason719 2016. 8. 31. 16:12

2016.08.31. Wed. 열여덟 번째 수업!


오늘의 수업내용

  • InnerClass에 대해 알아보자
  • Static Inner Class에 대해 알아보자
  • Frame 예제를 통해 Inner Class의 편리함을 알아보자
1. Inner Class 생성
class 안에 class를 생성하는 것이다.
외부 클래스에 비해 접근이 편리하다.

아래의 예제를 살펴보자

package com.javalesson.ch18innerclass;


import com.javalesson.ch18innerclass.OutClass.InnerClass;


class OutClass{

int intVal = 0;

class InnerClass{

int intVal = 10;

public void innerMethod(){

int intVal = 100;

System.out.println("innerMethod().intVal= "+intVal);

System.out.println("InnerClass.intval= "+this.intVal);

System.out.println("OutClass.intval= "+OutClass.this.intVal);

}

}

}

public class L01InnerClass {

public static void main(String[] args) {

InnerClass ic = new OutClass().new InnerClass();

ic.innerMethod();

}//main

}//class


2. Static Inner Class 생성

 Static Inner Class의 기능과 접근 방법에 대해 알아보자


아래의 예제를 살펴보자

package com.javalesson.ch18innerclass;

class OutPrint{

public void println(String a){

System.out.println(a);

}

public void println(int a){

System.out.println(a);

}

public void println(boolean a){

System.out.println(a);

}

}

class OuterClass{

int val = 0;

static int staticVal = 50;

public static OutPrint out = new OutPrint();//syso의 원리 이해

class InClass{

int val = 10;

}//InClass

static class StaticClass{

int val = 0;//사용하지 않기를 권장. 

static int staticVal = 50;

StaticClass(){}//생성자를 가질 수 있지만 new 연산자로 생성자를 호출할 수 없다.

public void a(){

System.out.println("StaticClass.a() 호출");

}//a()

public static void method(){

System.out.println("\nStaticClass.staticVal="+staticVal);

System.out.println("StaticClass.val= 불가능");//불가능

System.out.println("InClass.val="+new OuterClass(). new InClass().val);

System.out.println("OuterClass.val="+new OuterClass().val);

System.out.println("OuterClass.staticVal="+OuterClass.staticVal);

}

}//StaticClass

public void method(){

System.out.println("\nStaticClass.staticVal="+StaticClass.staticVal);

System.out.println("StaticClass.val= 불가능");

System.out.println("InClass.val="+new InClass().val);

System.out.println("OuterClass.val="+this.val);

System.out.println("OuterClass.staticVal="+staticVal);

}

}//OuterClass

public class L02StaticInnerClass {

public static void main(String[] args) {

new OuterClass().method();

OuterClass.StaticClass.method();

new OuterClass().out.println("\n안녕하세요");

}//main

}//class


3. Frame 예제를 통해 inner class를 연습

외부클래스로 윈도우 닫는 것을 구현한다.

내부클래스로 폰트 변경과 마우스리스너를 작동시켜보자


아래의 예제를 살펴보자



'IT story > Java' 카테고리의 다른 글

D+20 awt(text & text editor)  (0) 2016.09.06
D+19 Thread(쓰레드)  (0) 2016.09.01
D+17 SerialOut & SerialInput  (0) 2016.08.30
D+17 Input Output(입, 출력)  (0) 2016.08.29
D+16 Exception(예외처리) Throws  (0) 2016.08.27