본문 바로가기

6개월 대장정/JAVA 개념

18일차 - 인터페이스(2)

반응형

안녕하세요. pitang입니다.

8장 인터페이스 뒷부분을 보도록 하겠습니다.

 

인터페이스 - 타입 변환

구현 객체가 인터페이스 타입으로 변환되는 것은 자동 타입 변환에 해당한다.

자동 타입 변환은 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말한다.

 

인터페이스 변수 = 구현 객체;

인터페이스 구현 클래스를 상속해서 자식 클래스를 만들었다면 자식 객체 역시 인터페이스 타입으로 자동 타입 변환시킬 수 있다.

 

ex1)

p05casting Example1

 

ex2)

강제 타입 변환을 해서 다시 구현 클래스 타입으로 변환한 다음, 구현 클래스의 필드와 메서드를 사용할 수 있다.

 

구현 클래스 변수 = (구현 클래스) 인터페이스 변수;

 

p05casting Example2

-> 프로그램 정상 종료 가 출력된다.

 

ex3)

instanceof 연산자는 인터페이스 타입에서도 사용할 수 있고 어떤 객체인지 확인해 안전하게 강제 타입 변환을 해야 한다.

 

p05casting Example3
Example3 console

 

인터페이스 - 익명 구현 객체

소스파일을 만들지 않고도 구현 객체를 만들 수 있는 방법이 익명 구현 객체이다.

클래스와 인스턴스(객체)를 한 번에 만들 수 있다.

 

익명 구현 객체의 코드 패턴은

인터페이스 변수 = new 인터페이스() {

       //인터페이스에 선언된 추상 메서드의 실체 메서드 선언

};

이다.

 

new 연산자 뒤에는 클래스 이름이 와야 하지만 이름이 없다.

인터페이스() {}는 인터페이스를 구현해서 중괄호 {}와 같이 클래스를 선언하라는 뜻이고,

new 연산자는 이렇게 선언된 클래스를 객체로 생성한다.

중괄호 안에는 인터페이스에 선언된 모든 추상 메서드들의 실체 메서드를 작성해야 한다. 그렇지 않으면 컴파일 에러가 발생한다.

 

ex)

MyInterface1 (인터페이스) - MyInterface2 (인터페이스)
MyClass1 (MyInterface1 구현)
Example1 MainClass
Example2 MainClass

-> 구현 클래스의 메서드 1 이 출력된다.

-> MyInterface2()에는 method1의 메서드가 있으므로 재정의를 꼭 해줘야 함.

Example3 MainClass
MainClass console

 

인터페이스 추상 메서드 사용

구현 객체가 인터페이스 타입에 대입되면 인터페이스에 선언된 추상 메서드를 개발 코드에서 호출할 수 있게 된다.

 

ex)

MyAbstractClass1 (추상클래스)
MyAbstractClass2 (추상클래스) - method1() 과 추상 method2()
Example1 MainClass
Example2 MainClass

-> 보통 메서드

     추상 메서드 재정의 가 출력된다.

 

 

감사합니다.

 

*m1 맥북을 사용 중입니다.*

 

 

 

728x90
반응형