19일차 강의 정리
1. 내부클래스 (클래스 안의 클래스)
소스1
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 29 30 31 32 33 34 35 36 37 38 39 | public class Ex03 { static class Inner03{ //내부클래스 static int a=100; int b=50; static class Inin03{ static int a=10; } public Inner03(){ //내부클래스 생성자 } static void func01(){ System.out.println("Inner class func01() call"); } void func02(){ func(); System.out.println("Inner class func02() call"); } }//Inner03 class end public static void main(String[] args) { // com.hb.am.Ex03 me = new com.hb.am.Ex03(); //패키지 경로가 숨겨져있다 // com.hb.am.Ex03.func(); //패키지 경로,내클래스명 숨겨있다 Ex03.Inner03.func01(); Inner03 in = new Inner03(); //내부클래스 객체생성 in.func02(); System.out.println(Ex03.Inner03.a); System.out.println(in.b); //non-static System.out.println(Ex03.Inner03.Inin03.a); //static 이면 접근 쉽다 }//main end public static void func(){ System.out.println("Ex03 class func02() call"); }//func() end }//Ex03 class end | cs |
결과1
소스2
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 29 30 31 32 33 34 | public class Ex04 { int a = 4; int b = 5; class Inner04{ //내부클래스 int a=100; // static int b=50; //static은 class가 static일경우에 사용가능 public Inner04(){ //생성자 } void func01(){ System.out.println("Inner04 class func01()"); System.out.println("Ex04-b :"+b); func02(); } // static void func02(){ // System.out.println("Inner04 class func02()"); // } } public static void main(String[] args) { Ex04 me = new Ex04(); Ex04.Inner04 inme; inme = me.new Inner04(); //Inner클래스의 생성자 객체 생성 System.out.println(inme.a); //Inner클래스의 변수 출력 inme.func01(); //Inner클래스의 메소드 호출 }//main end public void func02(){ System.out.println("Ex04 class func02"); } } | cs |
결과2
2. 로컬클래스 (메소드 안의 클래스)
소스
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | public class Ex05 { int a=5; public Ex05(){ } //Ex05 생성자 public static void main(String[] args) { Ex05 me = new Ex05(); me.func01(); me.func02(4); }//main end void func01(){ System.out.println("Ex05-func01()"); } void func02(final int m){ //인자도 상수화시키면 LocalC에서 사용가능 System.out.println("Ex05-func02()"); int i=10; //LocalC에서 사용이 불가능(but 상수화(final)시키면 가능 //LocalClass class LocalC{ int i=11; //오류가 나지 않는다 LocalC(){ } void func03(){ System.out.println("로컬class-func03()-"+m); //인자를 받은 지역변수를 사용할수없다(자바 ver.1.8에서는 가능) } void func04(){ System.out.println("로컬class-func04()-"+a); //필드 사용가능 } void func05(){ System.out.println("로컬class-func04()-"+i); } }//LocalC class end LocalC inn = new LocalC(); inn.func03(); inn.func04(); inn.func05(); return; //return 해서 메인에서 사용하고싶은 경우에 interface를 사용해서한다(소스 가져오기!!) }//func02() end }//Ex05 class end | cs |
결과
'* Programming > JAVA' 카테고리의 다른 글
DAY20 this/super (0) | 2016.08.02 |
---|---|
DAY19 익명클래스 (0) | 2016.08.02 |
DAY19 예외처리2 (0) | 2016.08.01 |
숫자 입력시 천단위 정규식 (0) | 2016.08.01 |
DAY18 예외처리 (0) | 2016.08.01 |