This is a blog.

자바 기록 10일차 본문

JAVA/Book Summary

자바 기록 10일차

Calcot 2021. 6. 10. 21:35

혼자 공부하는 자바 / 저자 : 신용권

chapter08. 인터페이스 정리.

 

 

인터페이스

 

 

인터페이스

개발 코드와 객체가 서로 통신하는 접점 역할.

 

인터페이스 선언

[public] interface 인터페이스이름{ ... }

영어 대소문자 구분.

첫 글자를 대문자로 나머지는 소문자로 작성.

상수 필드와 추상메소드만 구성 멤버로 가진다.

인터페이스는 객체를 생성할 수 없기 때문에 생성자를 가질 수 없다.

 

interface 인터페이스이름 {

//상수

타입 상수이름 = ;

//추상 메소드

타입 메소드이름( 매개변수, ... );

}

 

상수 필드 선언

인스턴스 또는 정적 필드를 선언할 수 없다.

상수 필드는 선언 가능.

[public static final] 타입 상수이름 = ;

=> public static final 생략 가능.

 

추상 메소드 선언

[public abstract] 리턴타입 메소드이름(매개변수,...);

=> public abstract 생략 가능.

 

 

인터페이스 구현

개발 코드가 인터페이스 메소드를 호출하면 인터페이스는 객체의 메소드를 호출한다.

객체는 인터페이스에서 정의된 추상 메소드와 동일한 메소드 이름, 매개 타입, 리턴 타입을 가진 실체 메소드를 가지고 있어야 한다. => 구현 객체.

구현 객체를 생성하는 클래스 => 구현 클래스

 

구현 클래스

public class 구현클래스이름 implements 인터페이스이름 {

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

}

=> implements 키워드와 인터페이스 이름을 명시해야 한다.

구현 클래스가 생성되면 new 연산자로 객체를 생성할 수 있다.

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

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

 

 

다중 인터페이스 구현 클래스

객체는 다수의 인터페이스 타입으로 사용할 수 있다.

public class 구현클래스이름 implements 인터페이스A, 인터페이스B {

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

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

}

구현 클래스는 모든 인터페이스의 추상 메소드에 대해 실체 메소드를 작성해야 한다.

 

 

인터페이스 사용

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

p.384 인터페이스 사용 참조.

 

 

타입 변환과 다형성

프로그램 소스 코드는 변함이 없는데, 구현 객체를 교체함으로써 프로그램의 실행결과가 다양해진다. => 인터페이스의 다형성

 

자동 타입 변환

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

구현 클래스의 자식 클래스 또한 인터페이스 타입으로 자동 타입 변환할 수 있다.

 

강제 타입 변환

구현 객체가 인터페이스 타입으로 자동 타입 변환 되면, 인터페이스에 선언된 메소드만 사용 가능하다. => 강제 타입 변환으로 해결 가능.

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

 

객체 타입 확인

강제 타입 변환은 구현 객체가 인터페이스 타입으로 변환되어 있는 상태에서 가능.

어떤 구현 객체가 지정될지 모르는 상황에서는 ClassCastException이 발생할 수 있다.

instanceof

- 어떤 구현 객체가 인터페이스 타입으로 변환되었는지 확인하는 방법.

 

 

인터페이스 상속

인터페이스도 다른 인터페이스를 상속할 수 있다.

클래스와 달리 다중 상속을 허용한다.

public interface 하위인터페이스 extends 상위인터페이스1, 상위인터페이스2{...}

 

 

 

'JAVA > Book Summary' 카테고리의 다른 글

자바 기록 12일차  (0) 2021.06.15
자바 기록 11일차  (0) 2021.06.14
자바 기록 9일차  (0) 2021.06.09
자바 기록 8일차  (0) 2021.06.08
자바 기록 7일차  (0) 2021.06.07
Comments