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 인터페이스 메소드...
계속하려면 아무 키나 누르십시오 . . .
'Study Note > Java' 카테고리의 다른 글
JAVA_ Test115_ 인터페이스(Interface) 정의 / 『extends』 vs 『implements』 쓰이는 영역 정의 (0) | 2018.06.16 |
---|---|
JAVA_ Test114_ 인터페이스(Interface) 정의 (0) | 2018.06.16 |
JAVA_ Test112_ 인터페이스(Interface) 정의 (0) | 2018.06.15 |
JAVA_ Test111_ 상속 관계에 있는 클래스들 간의 캐스팅 / 업 캐스팅, 다운 캐스팅 (0) | 2018.06.15 |
JAVA_ Test110_ 추상 클래스(Abstract) (0) | 2018.06.15 |
댓글