인터페이스

//InterfaceTest.java interface IStack { void push(int item); int pop(); } class FixedStack implements IStack { private int stack[]; private int tos; FixedStack(int size) { stack = new int[size]; tos = -1; } public void push(int item) { // 인터페이스에서 정의된 메소드 if(tos==stack.length-1) System.out.println("스택이 꽉찾음"); else stack[++tos] = item; } public int pop() { // 인터페이스에서 정의된 메소드 구현 if(tos < 0) { System.out.println("스택이 비었음"); return 0; } else return stack[tos--]; } } class InterfaceTest { public static void main(String args[]) { FixedStack mystack1 = new FixedStack(10); FixedStack mystack2 = new FixedStack(5); for(int i=0 ; i<10 ; i++) mystack1.push(i); for(int i=0 ; i<5 ; i++) mystack2.push(i); System.out.println("스택 : mystack1"); for(int i=0 ; i<10 ; i++) System.out.print(mystack1.pop() + " "); System.out.println(); System.out.println("스택 : mystack2"); for(int i=0 ; i<5 ; i++) System.out.print(mystack2.pop() + " "); } } //ITExtend.java interface A { void ameth1(); void ameth2(); } interface B { void bmeth1(); } interface C extends A,B { // 두개의 인터페이스 상속 void cmeth1(); } class InterfaceClass implements C { public void ameth1() { System.out.println("ameth1() 메소드의 구현"); } public void ameth2() { System.out.println("ameth2() 메소드의 구현"); } public void bmeth1() { System.out.println("bmeth1() 메소드의 구현"); } public void cmeth1() { System.out.println("cmeth1() 메소드의 구현"); } } class ITExtend { public static void main(String arg[]) { InterfaceClass ic = new InterfaceClass(); ic.ameth1(); ic.ameth2(); ic.bmeth1(); ic.cmeth1(); } } //InterfaceReference.java interface A { void display(String s); } class C1 implements A { public void display(String s) { System.out.println("클래스 C1 객체 이용 : " + s); } } class C2 implements A { public void display(String s) { System.out.println("클래스 C2 객체 이용 : " + s); } } class C3 implements A { public void display(String s) { System.out.println("클래스 C3 객체 이용 : " + s); } } class InterfaceReference { public static void main(String args[]) { A memo; // A인터페이스형 참조 변수 memo 선언 memo = new C1(); // 클래스 C1의 객체를 생성하여 memo에 할당 memo.display("안녕하세요? "); memo = new C2(); memo.display("알기쉽게 해설한 자바."); memo = new C3(); memo.display("자바를 자바봅시다."); } } //InstanceOf.java class A { int i, j; } class B extends A{ int k; } class C extends B { int l; } class InstanceOf { public static void main(String args[]) { A a = new A(); B b = new B(); C c = new C(); if(a instanceof A) System.out.println("a는 A 클래스의 객체"); if(b instanceof B) System.out.println("b는 B 클래스의 객체"); if(c instanceof C) System.out.println("c는 C 클래스의 객체"); if(c instanceof A) System.out.println("c는 A 클래스의 객체 : 형변환"); // 객체 c는 클래스 A가 가지고 있는 모든 정보를 제공할 수 있다 // 형변환이 성공한다 if(a instanceof C) System.out.println("a는 C 클래스의 객체 : 형변환"); else System.out.println("a는 C 클래스의 객체가 아님 : 형변환 불가"); // 객체 a는 클래스 C가 가지고 있는 모든 정보를 제공할 수 없다 // 형변환이 실패 } }