2013년 6월 27일 목요일

(130627) 4일차 AbstractFinalClassExam.java (4일차 7교시 Interface test)

 - 소스
//이 소스를 컴파일이 되도록 수정/추가/주석처리 하세요.
interface InterfaceExam00{
abstract void interfaceExam00(); // 인터페이스이므로 추상메소드 구현
}

// 인터페이스와 인터페이스끼리 상속 가능
interface InterfaceExam01 extends InterfaceExam00{ // InterfaceExam00를 상속받음
public int i = 767;
public int k = 999;
public void interfaceExam01(int i, int k); // 인터페이스이므로 추상메소드 구현
}

interface InterfaceExam02{
int j =747;
public int privateInt = 8;
public void interfaceExam02(int j);
}

class SuperClassExam{
String superString = "Super";
String superMethod(){
System.out.println("SuperClassExam.SuperMethod()가 호출되었습니다.");
return "returnString";
}
}

class SubClassExam01 extends SuperClassExam implements InterfaceExam01{
@Override // interfaceExam00의 추상메소드 오버라이딩
public void interfaceExam00() {
}

@Override // interfaceExam01의 추상메소드 오버라이딩
public void interfaceExam01(int i, int k) {
}
}

abstract class SubClassExam02 extends SuperClassExam implements InterfaceExam01, InterfaceExam02{}
// 추상클래스이기 때문에 오버라이딩 할 의무가 없다.

class SubClassExam03 extends SuperClassExam implements InterfaceExam01, InterfaceExam02{
@Override
public void interfaceExam00() {
}

@Override
public void interfaceExam01(int i, int k) {
}

@Override // interface InterfaceExam02에 대한 오버라이딩
public void interfaceExam02(int j) {
}
}

class SubClassExam04 extends SubClassExam02{
//여기에 필요한 것들을 추가하여 문제를 해결하세요..
SubClassExam04(){
System.out.println("subClassExam04() 객체 생성");
System.out.println(" i = "+i);
System.out.println(" j = "+j);
}
SubClassExam04(String s1, String s2){
System.out.println(s1+" 타입 "+"subClassExam04("+s2+") 객체 생성");
}
public void printSuperString(){
//InterfaceExam01 ie01 = new InterfaceExam01(); // 인터페이스는 자체적으로 객체가 될 수 없다.
System.out.println(" superString = "+superString);
}

public void interfaceExam00() {
System.out.println("SubClassExam04.interfaceExam00()이 호출되었습니다.");
}

public void interfaceExam01(int i, int k){
System.out.println("SubClassExam04.interfaceExam00()이 호출되었습니다.");
}

@Override // interface InterfaceExam02에 대한 오버라이딩
public void interfaceExam02(int j) {
}
}

//여기서부터는 하나도 고치지 마시고 그대로 쓰면 됩니다.
public class ImplememtsInterfaceExam{ 
public static void main(String args[]){
SubClassExam02 sub02sub04 = new SubClassExam04("SubClassExam02", "sub02sub04");
SuperClassExam superSub04 = new SubClassExam04("SuperClassExam", "superSub04");
InterfaceExam01 ifc01Sub04 = new SubClassExam04("InterfaceExam01", "ifc01Sub04");
SubClassExam04 sub04 = new SubClassExam04();
sub04.interfaceExam00();
sub04.interfaceExam01(1,7);
sub04.superMethod();
}
}


 - 결과