1 / 23

7. 내부 클래스와 유용한 클래스들

7. 내부 클래스와 유용한 클래스들. 최종명 choijm@dreamwiz.com. 7.1 내부 클래스. 내부 클래스 클래스 내부에 선언된 클래스 종류 멤버 클래스 – 클래스 멤버로 선언된 내부 클래스 지역 클래스 – 함수 내부에 선언된 내부 클래스 무명 클래스 – 이름이 없는 내부 클래스. 7.1 내부 클래스. 멤버 클래스 내부 클래스에서 외부 멤버 필드 / 메소드 접근 외부클래스이름 .this. 멤버필드 외부클래스이름 .this. 메소드 () 예제 : ABC.java.

Download Presentation

7. 내부 클래스와 유용한 클래스들

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 7. 내부 클래스와 유용한 클래스들 최종명 choijm@dreamwiz.com

  2. 7.1내부 클래스 • 내부 클래스 • 클래스 내부에 선언된 클래스 • 종류 • 멤버 클래스 – 클래스 멤버로 선언된 내부 클래스 • 지역 클래스 – 함수 내부에 선언된 내부 클래스 • 무명 클래스 – 이름이 없는 내부 클래스

  3. 7.1내부 클래스 • 멤버 클래스 • 내부 클래스에서 외부 멤버 필드/메소드 접근 외부클래스이름.this.멤버필드 외부클래스이름.this.메소드() • 예제: ABC.java 1 public class ABC { 2 public String msg = "A"; 3 public void print() { 4 BC bc = new BC(); 5 bc.print(); 6 } 8 public class BC { 9 public String msg = "B";

  4. 7.1내부 클래스 • 예제: ABC.java (계속) 10 public void print() { 11 C c = new C(); 12 c.print(); 13 } 14 // 멤버 클래스 C 15 public class C { 16 public String msg = "C"; 17 public void print() { … 20 System.out.println(C.this.msg); 21 System.out.println(BC.this.msg); 22 System.out.println(ABC.this.msg);

  5. 7.1내부 클래스 • 지역 클래스 • 정의된 메소드에서만 사용 가능 • 예제: LocalClassTest.java 1 class LocalClassTest { 2 private String name; 3 Sayable sayable; 5 public LocalClassTest(String n) { 6 this.name = n; 8 class LocalClass implements Sayable { 9 public void say() { 10 System.out.println("Hello " + name); 11 } 12 } 14 sayable = new LocalClass();

  6. 지역 클래스 사용 무명 클래스 사용 7.1내부 클래스 public void doX() { ...... class Y implements Z { 프로그램코드 } Z k = new Y(); } public void doX() { ...... Z k = new Z() { 프로그램코드 }; }

  7. 7.1내부 클래스 • 예제: AnonymousClassTest.java 1 class AnonymousClassTest { 2 private String name; 3 Greetable greet; 5 public AnonymousClassTest(String n) { 6 this.name = n; 8 greet = new Greetable() { 9 public void say() { 10 System.out.println("Hello " + name); 11 } 12 }; 13 }

  8. 7.2 static과 final의 의미 • final 키워드 • final 키워드는 클래스, 메소드, 멤버 필드에 기술할 수 있다. • Final 클래스 • 다른 클래스의 부모 클래스가 될 수 없다. • Abstract 키워드와 같이 사용될 수 없다. • Final 메소드 • Final 메소드는 재정의(override)될 수 없다 • Final 멤버 필드 • Final 멤버 필드는 값을 변경할 수 없다.

  9. 7.2 static과 final의 의미 • static 키워드 • 멤버 필드와 메소드 앞에 기술할 수 있다. • Static 멤버 필드 • 객체들간의 전역 변수로 사용된다. • 다음과 같은 형태로 사용된다. 클래스이름.멤버필드 • Static 메소드 • 다음과 같은 형태로 사용된다. 클래스이름.메소드() • Static 메소드에서는 this, super를 사용할 수 없다.

  10. 7.2 static과 final의 의미 • 예제: CPU.java 1 public class CPU { 2 public static int serialNo = 0; 3 protected String name; 4 protected int mynum; 6 public CPU(String name) { 7 this.name = name; 8 mynum = serialNo; 9 serialNo = serialNo + 1; 10 } 12 public void print() { 13 System.out.println(name + "[" + mynum + "]"); 14 }

  11. 7.2 static과 final의 의미 • 예제: CPUMaker.java 3 CPU kims, lees; 4 5 kims = new CPU("펜티엄5"); 6 lees = new CPU("펜티엄5"); 7 kims.print(); 8 lees.print(); 9 System.out.println("kims.serialNo = " + kims.serialNo); 10 kims.serialNo = 100; 11 System.out.println("kims.serialNo = " + kims.serialNo); 12 System.out.println("lees.serialNo = " + lees.serialNo); 13 System.out.println("CPU.serialNo = " + CPU.serialNo);

  12. 7.3 배열 • 배열 선언 자료형 변수 []; 자료형[] 변수; • 배열 선언과 생성 자료형 변수 [] = new 자료형[크기]; 자료형[] 변수 = new 자료형[크기]; • 배열 초기화 int[] k = { 1, 2, 3 };

  13. 7.3 배열 • 예제: Guass.java 1 class Gauss { 2 public static void main(String[] args) { 3 int[] ia = new int[101]; 4 for (int i = 0; i < ia.length; i++) { 5 ia[i] = i; 6 } 7 int sum = 0; 8 for (int i = 0; i < ia.length; i++) { 9 sum = sum + ia[i]; 10 } 11 System.out.println(sum);

  14. 7.3 배열 • 다차원 배열 • []를 여러 개 사용함으로써 다차원 배열 선언 • 예: • 초기화 int t[][] = new int[2][3]; t[0][0] = 1; … t[1][2] = 6; int t[][] = { {1, 2, 3}, {4, 5, 6} };

  15. 7.4 문자열 • String 클래스 • 문자열을 표현하기 위해서 사용되는 클래스 • 유용한 메소드들 ▪ char charAt(int index) - index 번째의 문자를 리턴한다. ▪ boolean endsWith(String suffix) - 문자열이 suffix 문자열로 끝나는가 알아본다. ▪ int indexOf(char ch) - ch 문자가 처음 매치되는 곳의 index 값을 리턴한다. ▪ int length(char ch) - 문자열의 길이를 리턴한다. 문자열의 길이는 문자들의 개수를 의미한다. ▪ String replace(char old, char new) - old 문자를 new 문자로 변환해서 String 객체를 리턴한다. ▪ String substring(int beginIndex) - beginIndex부터 끝까지 부분 문자열을 리턴한다.

  16. 7.4 문자열 • 예제: StringDemo.java 2 public static void main(String args[]) { 3 String msg = "How are you ?"; 4 String capital; 5 String tmsg; 6 7 System.out.println("msg: " + msg); 8 capital = msg.toUpperCase(); 9 System.out.println("capital: " + capital); 10 tmsg = msg.replace(' ','\t'); 11 System.out.println("tmsg: " + tmsg);

  17. 7.5 Math 클래스 • Math 클래스 • 수학 계산을 위해서 사용 • 유용한 메소드들 ▪ public static <type> abs(<type> value) - 매개변수 value 의 절대값을 리턴한다. ▪ public static <type> max(<type> a, <type> b) - a 와 b 중에서 큰 값을 리턴한다. ▪ public static <type> min(<type> a, <type> b) - a 와 b 중에서 작은 값을 리턴한다. ▪ public static double log(double a) - 자연 로그 lna값을 리턴한다. ▪ public static double pow(double a, double b) - ab값을 리턴한다. ▪ public static double sin(double a) - sin(a) 값을 리턴한다. a는 라디안 값이다. ▪ public static double sqrt(double a) - a의 제곱근 값을 리턴한다.

  18. 7.5 Math 클래스 • 예제: MathDemo.java 1 public class MathDemo { 2 public static void main(String args[]) { 3 int value = (int) Math.pow(2, 9); 4 System.out.println("2 ^ 9 = " + value);

  19. 7.6 Object와 Class 클래스 • Object 클래스 • 모든 클래스의 부모 클래스 • 유용한 메소드들 • Class 클래스 • 자바 클래스를 표현하기 위한 클래스 • 유용한 메소드들 ▪ Class getClass() - Object의 클래스 정보에 대한 Class 객체를 리턴한다. ▪ String toString() - Object를 문자열로 표현하기 위한 String 객체를 라턴한다. ▪ static Class forName(String className) - forName() 메소드는 자바 객체를 new와 생성자를 사용하지 않고도 생성할 수 있는 방법을 제공한다. ▪ String getName() - 클래스 이름을 리턴한다.

  20. 7.7 데이터 타입 클래스들 • 데이터 타입 클래스들 • 자바 기본형을 표현한 클래스들

  21. 7.8 Vector 클래스 • Vector 클래스 • 크기가 동적으로 변하는 클래스 • 유용한 메소드들 ▪ void add(int index, Object element) - element를 index 위치에 추가한다. ▪ void addElement(Object element) - element를 맨끝 위치에 추가한다. ▪ void remove(int index) - index 위치의 element를 삭제한다. ▪ void removeElement(Object element) - 벡터에서 처음 매칭되는 element를 삭제한다. ▪ Object elementAt(int index) - index 번째의 element를 리턴한다. ▪ int size() - 현재 벡터에 있는 element의 개수를 리턴한다.

  22. 7.8 Vector 클래스 • 예제: VectorTest.java 1 import java.util.*; 3 public class VectorTest { 4 public static void main(String args[]) { 5 Vector strs = new Vector(); 6 strs.addElement("abc"); 7 strs.addElement("de"); 8 strs.addElement("fg"); 9 int n = strs.size(); 10 for(int i = 0; i < n; i++) { 11 Object o = strs.elementAt(i); 12 String s = (String) o; 13 System.out.println(s);

  23. 7.9 System 클래스 • System 클래스 • 유용한 멤버 필드들 • 유용한 메소드들 ▪ static PrintStream err - 표준 에러 ▪ static InputStream in - 표준 입력 ▪ static PrintStream out - 표준 출력 ▪ static long currentTimeMillis() - 현재 시각을 밀리초 단위로 리턴한다. ▪ static void exit(int status) - 현재 JVM을 종료한다. ▪ static void gc() - 가비지 콜렉터를 실행시킨다. ▪ static void setIn(InputStream in) - 표준 입력을 in으로 변경한다. ▪ static void setOut(PrintStream out) - 표준 출력을 out으로 변경한다.

More Related