본문 바로가기
Study Note/Java

JAVA_ Test113_ 인터페이스(Interface) 정의

by 시뮝 2018. 6. 16.
728x90


Test113 인터페이스(Interface) 정의 / JDK 1.6(6.0) 이후 부터 적용 가능한 문법

※ JDK 1.5(5.0)에서는 인터페이스 메소드를 오버라이딩(Overriding)할 때 『@Overriding』 어노테이션(annotation)을 사용할 수 없다.

   JDK 1.6(6.0) 이후 부터 적용 가능한 문법이다. 단, 상속받은 클래스의 메소드를 오버라이딩(Overriding)할 때에는

   JDK 1.5(5.0) 에서도 『@Overriding』 어노테이션(annotation) 사용이 가능하다.


// 인터페이스

ADemo.java

interface ADemo

{

public void write();

}


// 인터페이스

BDemo.java

interface BDemo

{

public void print();

}


// 클래스

DemoImpl.java

class DemoImpl implements ADemo, BDemo

{

@Override

public void write()

{

System.out.println("ADemo 인터페이스 메소드...");

}

@Override

public void print()

{

System.out.println("BDemo 인터페이스 메소드...");

}

}


// main() 메소드를 포함하는 외부 클래스

Test000.java

public class Test113

{

public static void main(String[] args)

{

// ADemo ob = new ADemo(); //-- 인터페이스 → 생성 불가

// BDemo ob = new BDemo(); //-- 인터페이스 → 생성 불가


// ADemo, BDemo 인터페이스를 구현(implements)한 클래스(→ DemoImpl)

// 기반의 인스턴스 생성

DemoImpl ob1 = new DemoImpl();

ob1.write();

ob1.print();

//--==>> ADemo 인터페이스 메소드...

//       BDemo 인터페이스 메소드...


ADemo ob2 = new DemoImpl(); //-- 업 캐스팅

BDemo ob3 = new DemoImpl(); //-- 업 캐스팅


// ob2.print(); //-- 에러 발생

// ob3.write(); //-- 에러 발생


((BDemo)ob2).print();

//--==>> BDemo 인터페이스 메소드...

//-- DemoImpl 클래스가 두 인터페이스를 모두

//   구현했기 때문에 가능하다.

//   만약... BDemo 인터페이스를 구현하지 않았다면...

//   런 타임 에러 발생하는 구문이 된다.

ob3.print();

//--==>> BDemo 인터페이스 메소드...


ob2.write();

//--==>> ADemo 인터페이스 메소드...


((ADemo)ob3).write();

//--==>> ADemo 인터페이스 메소드...

//-- DemoImpl 클래스가 두 인터페이스를 모두

//   구현했기 때문에 가능하다.

//   만약... BDemo 인터페이스를 구현하지 않았다면...

//   런 타임 에러 발생하는 구문이 된다.


((DemoImpl)ob3).write(); //-- 다운 캐스팅

}

}


cmd

ADemo 인터페이스 메소드...

BDemo 인터페이스 메소드...

BDemo 인터페이스 메소드...

BDemo 인터페이스 메소드...

ADemo 인터페이스 메소드...

ADemo 인터페이스 메소드...

ADemo 인터페이스 메소드...

계속하려면 아무 키나 누르십시오 . . .







728x90

댓글