IT COOKBOOK chapter 05 1 q 1 4
IT COOKBOOK chapter 05. 클래스Ⅱ -1 -
q 1) 클래스의 상속4 IT COOKBOOK [예제 5 -2] D_ca. Phone. java 01 class D_ca. Phone extends Cell. Phone{ 02 03 String pixel; //화소 수 04 public D_ca. Phone (String model, String num, int chord, String pixel){ 05 this. model = model; 06 number = num; 07 this. chord = chord; 08 this. pixel = pixel; 09 } 10 } [예제 5 -3] MP 3 Phone. java 01 class MP 3 Phone extends Cell. Phone{ 02 03 int size; // 저장 용량 04 public MP 3 Phone (String model, String num, int chord, int size){ 05 this. model = model; 06 number = num; 07 this. chord = chord; 08 this. size = size; 09 } 10 } -5 -
q 1) 클래스의 상속5 IT COOKBOOK [예제 5 -4] Cell. Phone. Test. java 01 class Cell. Phone. Test{ 02 03 public static void main(String[] args){ 04 D_ca. Phone dca = new D_ca. Phone( 05 "IN-7600", "011 -9 XXXX", 60, "400만"); 06 MP 3 Phone mp = new MP 3 Phone( 07 "KN-600", "011 -9 XXXX", 60, 256); 08 09 System. out. println(dca. get. Model()+", "+ 10 dca. get. Chord()+", "+dca. get. Number()); 11 } 12 } 실행결과 -6 -
q 1) 클래스의 상속8 § 오버라이딩 예제 [예제 5 -5]Overriding. Ex. java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 class Parent{ String msg = "Parent클래스"; public String get. Msg(){ return msg; } } IT COOKBOOK 17 public class Overriding. Ex { 18 public static void main(String[] args){ 19 20 Child cd = new Child(); 21 System. out. println("cd : "+cd. get. Msg()); 22 23 Parent pt = new Child(); 24 System. out. println("pt : "+pt. get. Msg()); 25 } 26 } class Child extends Parent{ String msg = "Child클래스"; public String get. Msg(){ //메서드 Overriding return msg; } } 실행결과 -9 -
q 1) 클래스의 상속10 IT COOKBOOK § super() 예제 [예제 5 -6]Super. Ex. java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 class Parent{ public Parent(int var){ System. out. println("Parent 클래스"); } } class Super. Ex extends Parent { public Super. Ex() { super(1); System. out. println("Super. Ex 클래스"); } public static void main(String[] args) { Super. Ex se = new Super. Ex(); } } 실행결과 - 11 -
q 3) 추상화 4 IT COOKBOOK Abs. Ex. java 01 class Abs. Ex extends Abs. Ex 2{ 02 03 public String get. Str(){ //Abs. Ex 2의 추상 메서드 재 정의 04 return str; //str은 Abs. Ex 1의 멤버이다 05 } 06 public static void main(String[] args){ 07 Abs. Ex ae = new Abs. Ex(); 08 System. out. println("ae. get. A(): "+ae. get. A()); 09 System. out. println("ae. get. Str(): "+ae. get. Str()); 10 } 11 } [예제 5 -12] 실행결과 - 16 -
q 4) 인터페이스 2 IT COOKBOOK [예제 5 -18]Inter. Test. Ex. java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 interface Inter. Test { static final int A = 100; abstract int get. A(); //abstract예약어는 생략 가능! } class Inter. Test. Ex implements Inter. Test { public int get. A(){ return A; } public static void main(String[] args) { Inter. Test. Ex it 1 = new Inter. Test. Ex(); System. out. println("get. A(): "+it 1. get. A()); } } 실행결과 - 18 -
q 4) 인터페이스 4 (275 p) IT COOKBOOK [예제 5 -19]Inter. Ex 2. java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 interface Inter 1{ public int get. A(); } ///////////////////// interface Inter 2{ public int get. A(); } ///////////////////// interface Inter 3 extends Inter 1, Inter 2{ public int get. Data(); 21 } 22 ///////////////////// 23 class Inter. Ex 2 implements Inter 3{ 24 int a = 100; 25 public int get. A(){ 26 return a; 27 } 28 public int get. Data(){ 29 return a+10; 30 } } - 20 - 실행결과 public static void main(String[] args){ Inter. Ex 2 it = new Inter. Ex 2(); Inter 1 it 1 = it; Inter 2 it 2 = it; Inter 3 it 3 = it; System. out. println(it 1. get. A()); System. out. println(it 2. get. A()); System. out. println(it 3. get. Data()); }
q 6) 내부 클래스 4 (289 p) § Member 내부 클래스 예제 [예제 5 -25] Member. Inner. java IT COOKBOOK 실행결과 01 class Member. Inner{ 02 03 int a = 10; 04 private int b = 100; 05 static int c = 200; 06 07 class Inner { //내부 클래스 정의 08 public void print. Data(){ 09 System. out. println("int a : "+a); 10 System. out. println("private int b : "+b); // 주시하자! 11 System. out. println("static int c : "+c); 12 } 13 } 14 public static void main(String[] args){ 15 16 // Member. Inner outer = new Member. Inner(); 17 // Member. Inner inner = outer. new Inner(); 18 Member. Inner inner = new Member. Inner(). new Inner(); 19 inner. print. Data(); 20 } 21 } - 24 -
q 6) 내부 클래스 6 (291 p) IT COOKBOOK § Local 내부 클래스 예제 [예제 5 -26] Local. Inner. java 01 class Local. Inner { 02 03 int a = 100; //멤버 변수 04 public void inner. Test(int k){ 05 int b = 200; // 지역변수 06 final int c = k; //상수 07 class Inner{ 08 // Local 내부 클래스는 외부클래스의 멤버 변수와 09 // 상수들만 접근이 가능하다. 10 public void get. Data(){ 11 System. out. println("int a : "+a); 12 // System. out. println("int b : "+b); //Local 내부클래스는 13 // 지역변수를 사용할 수 없다. 14 System. out. println("final int c : "+c); //상수 사용 15 } 16 } // 내부 클래스의 끝 17 Inner i = new Inner(); //메서드 내에서 Local 내부 클래스 생성 18 i. get. Data(); //생성된 reference를 통해 메서드 호출 19 } // 메서드의 끝 - 26 -
q 6) 내부 클래스 7 20 21 22 23 24 } IT COOKBOOK public static void main(String[] args) { Local. Inner outer = new Local. Inner(); outer. inner. Test(1000); } 실행결과 - 27 -
q 6) 내부 클래스 9 (293 p) IT COOKBOOK § static 내부 클래스 예제 [예제 5 -27] Static. Inner. java 01 class Static. Inner { 02 03 int a = 10; 04 private int b = 100; 05 static int c = 200; 06 07 static class Inner{ 08 // 어쩔 수 없이 내부 클래스를 static으로 선언해야 할 경우가 있다. 09 // 그건 바로 내부 클래스의 멤버들 중 하나라도 10 // static멤버가 있을 때이다. 11 static int d = 1000; 12 public void print. Data(){ 13 // System. out. println("int a : "+a); //오류 14 // System. out. println("private int b : "+b); //오류 15 System. out. println("static int c : "+c); 16 } 17 } - 29 -
q 6) 내부 클래스 12 (297 p) IT COOKBOOK § Anonymous(익명) 내부 클래스 예제 [예제 5 -29] Anony. Inner 1. java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 abstract class Test. Abst{ int data = 10000; public abstract void print. Data(); // 추상메서드 } class Anony. Inner 1{ Test. Abst inn = new Test. Abst (){ public void print. Data(){ // 미완성된 것을 완성한다. System. out. println("data : "+data); } }; public static void main(String[] args){ Anony. Inner 1 ai = new Anony. Inner 1(); ai. inn. print. Data(); } } - 32 - 실행결과
- Slides: 32