[혼공자][week5] Day15 인터페이스 (기본숙제 포함)

Ida·2025년 2월 11일
0

혼공자

목록 보기
16/20

벌써 5주차
이제 슬슬 앞 내용이 잊혀지기 시작했다
복습은 언제 하려나

08-1 인터페이스 (기본숙제)

인터페이스
개발 코드와 객체가 서로 통신하는 접점 역할
개발 코드 -> 인터페이스 메소드 호출
인터페이스 -> 객체 메소드 호출

즉, 개발코드는 인터페이스 메소드만 알고 있으면 됨

1. 인터페이스 선언

인터페이스 선언 시 interface키워드 사용

이클립스에서 인터페이스 생성



인터페이스 구조
인터페이스는 객체 생성 X -> 생성자 가질 수 없음.

interface 인터페이스 이름 {
 //상수 필드
 타입 상수이름 = 값;
 
 //추상메소드
 타입 메소드이름(매개변수,...);
}

상수 필드 선언

인터페이스는 객체 사용 방법을 정의한 것.
데이터 저장이 가능한 인스턴스/정적 필드 선언 X
상수는 인터페이스에 고정된 값이어서 실행시 데이터 변경 X
-> 상수 필드 사용 가능

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

public static final은 생략 가능. 컴파일 시 자동으로 붙게 됨.

상수 필드 RemoteControl 선언 (손코딩)

추상 메소드 선언

인터페이스를 통해 호출된 메소드는 객체에서 실행 되기 때문에 실행 블록이 필요없어 인터페이스에서는 추상 메소드로 선언.

인터페이스의 메소드는 모두 추상 메소드. public abstract를 생략해도 컴파일 과정에서 자동으로 붙음.

추상 메소드 선언 (손코딩)


turnOn(), turnOff(), setVolume(int volume) 메소드 선언부만 작성
setVolume은 int 매개값이 필요함

2. 인터페이스 구현

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

구현객체
인터페이스에서 정의된 추상 메소드와 동일한 메소드 이름, 매개 타입, 리턴 타입을 가진 실체 메소드

구현 클래스

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

보통의 클래스와 동일함.implements키워드를 추가해서 인터페이스 타입으로 사용할 수 있음을 알려줘야 함. 그리고 인터페이스에 선언된 추상 메소드의 실체 메소드를 선언

구현 클래스 Television, Audio 선언과 실체 메소드 선언 (손코딩)

인터페이스의 모든 메소드는 public 접근 제한이기 때문에 더 낮은 접근 제한으로 실체 메소드 작성 X

인터페이스에 구현 객체 대입 (손코딩)


인터페이스 변수는 참조 타입
-> 구현객체 대입시 구현 객체의 번지를 저장함.

RemoteControl 타입 변수 rc 선언 후 구현 객체 대입.

다중 인터페이스 구현 클래스 (손코딩)

다수의 인터페이스 타입으로 객체 사용 가능

예제로 알아보기

인터페이스 Searchable 선언

구현 클래스 SmartTelevision 선언


2개의 인터페이스의 추상 메소드를 구현 클래스에서 실체 메소드로 선언함.

인터페이스 변수에 구현 객체 대입

3. 인터페이스 사용

클래스 선언시 인터페이스는 필드, 생성자/메소드의 매개변수, 생성자/메소드의 로컬 변수로 선언 가능

예제로 알아보기

  • 필드 타입으로 사용하여 필드에 구현 객체 대입
  • 생성자 매개 변수 타입으로 사용. 구현 객체를 생성자 매개값으로 대입 가능
  • 로컬 변수 타입으로 사용, 변수에 구현 객체 대입
  • 메소드의 매개 변수 타입으로 사용, 메소드 호출 시 구현 객체를 매개값으로 대입

  • 필드로 선언된 rc는 Television의 메소드 실행
  • 생성자 매개 변수 타입 rc는 Audio 메소드 실행
  • 로컬 변수 rc는 Audio 메소드 실행
  • 메소드의 매개 변수 타입 rc는 Television 메소드 실행

개발코드(MyClass) -> 인터페이스(RemoteControl-추상메소드호출) -> 구현객체(Television, Audio-리모콘에 의해 메소드 실행)

profile
나는 이다이다.

0개의 댓글

관련 채용 정보