옝옹
냠
옝옹
전체 방문자
오늘
어제
  • 분류 전체보기 (84)
    • [LG유플러스]유레카 SW (5)
    • React (20)
    • JS (17)
    • TypeScript (5)
    • CSS & HTML (1)
    • 알고리즘 (11)
    • JAVA (20)
    • GIT (1)
    • 자격증 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트
  • toFixed
  • 템플릿리터럴
  • 자바
  • useCallback
  • 정적멤버
  • 리액트
  • java.lang패키지
  • join() 메서드
  • map() 함수
  • While문
  • 백준
  • match()
  • 리액트를다루는기술
  • continue문
  • 자바스트립트
  • map
  • template literal
  • js
  • 접근제한자
  • fillter
  • indexOf()
  • switch문
  • useMemo
  • 인스턴스멤버
  • 타입스크립트
  • Node.js
  • 타입변환
  • 혼자공부하는자바
  • java
  • 변수선언
  • 함수선언
  • useRef
  • 혼자 공부하는 자바
  • do-while문
  • 기본api클래스
  • reverse() 메서드
  • reduce
  • 화살표함수
  • sort() 메서드
  • useState
  • useEffect
  • java.util패키지
  • 코드스플리팅
  • JavaScript
  • ==
  • break문
  • TypeScript
  • 노마드코더
  • join()

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
옝옹

냠

인터페이스
JAVA

인터페이스

2022. 11. 9. 15:17

인터페이스

- 객체의 사용 방법을 정의한 타입

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

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

=> 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 됨

인터페이스 선언

인터페이스 선언은 class 키워드 대신에 interface 키워드를 사용

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

# 인터페이스 이름 작성 방법

  • 영어 대소문자 구분
  • 첫 글자 대문자
  • 나머지 소문자
interface 인터페이스이름 {
    //상수
    타입 상수이름 = 값;
    //추상 메소드
    타입 메소드이름(매개변수,…);
}

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

상수 필드 선언

- 인터페이스에 고정된값 => 실행 시에 데이터를 바꿀 수 없다.

- 인터페이스의 상수 필드는 기본적으로 public static final 특성을 갖는다.

- 상수는 반드시 선언과 동시에 초기값을 지정해야한다

# 상수 이름 작성 방법

  • 대문자로 작성
  • 언더바(_)로 연결

관례적으로 필드 이름은 모두 대문자로 작성해야 하며, 선언 시 초기값을 대입해야 합니다.

추상 메소드 선언

- 인터페이스의 메소드는 실행 블록 필요없이 추상 메소드로 선언

- 리턴 타입, 메소드 이름, 매개 변수만 기술되고 중괄호를 붙이지 않는 메소드

- public abstract의 특성을 갖는다 (생략해도 자동으로 붙음)

인터페이스 구현

구현 객체 : 객체는 인터페이스에서 정의된 추상 메소드와 동일한 메소드 이름, 매개 타입, 리턴 타입을 가진 실체 메소드를 가지고 있어야 하는데 이러한 객체
구현 클래스 : 구현 객체를 생성하는 클래스

구현 클래스

public class 구현클래스이름 implements 인터페이스이름 {
	//인터페이스에 선언된 추상 메소드의 실체 메소드 선언
}
  • 인터페이스로 구현 객체를 사용하려면 인터페이스 변수를 선언하고 구현 객체를 대입해야 한다
  • 인터페이스 변수는 참조 타입이기 때문에 구현 객체가 대입될 경우 구현 객체의 번지를 저장한다.

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

다수의 인터페이스 타입

인터페이스A와 인터페이스B가 객체의 메소드를 호출할 수 있으려면 객체는 이 두 인터페이스를 모두 구현해야한다.

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

public class 구현클래스이름 implements 인터페이스A, 인터페이스B {
	//인터페이스 A에 선언된 추상 메소드의 실체 메소드 선언
	//인터페이스 B에 선언된 추상 메소드의 실체 메소드 선언
}

 

인터페이스 사용

클래스를 선언할 때 인터페이스는 필드, 생성자 또는 메소드의 매개 변수, 생성자 또는 메소드의 로컬 변수로 선언됨.

  1. 인터페이스가 필드 타입으로 사용될 경우: 필드에 구현 객체를 대입할 수 있다.
  2. 인터페이스가 생성자의 매개 변수 타입으로 사용될 경우: new 연산자로 객체를 생성할 때 구현 객체를 생성자의 매개값으로 대입할 수 있다.
  3. 인터페이스가 로컬 변수 타입으로 사용될 경우: 변수에 구현 객체를 대입할 수 있다.
  4. 인터페이스가 메소드의 매개 변수 타입으로 사용될 경우: 메소드 호출 시 구현 객체를 매개값으로 대입할수 있다.

->대입이 된 후에는 재정의된 구현 객체의 메소드를 호출할 수 있습니다.

 

[확인 문제]

② new 연산자를 이용해서 인터페이스 객체를 만들 수 있다. (X)

나머지는 모두 O

③ 인터페이스 타입의 로컬 변수는 선언할 수 없다.(X)

나머지는 모두 O

package yeong.exam03;

public class Dog implements Soundable { 
    @Override
    public String sound() { 
    	return "멍멍";
    }
}
package yeong.exam03;

public class Cat implements Soundable {
  ©Override
  public String sound() { 
  return "야옹,,;
  }
}
저작자표시 비영리 변경금지 (새창열림)

'JAVA' 카테고리의 다른 글

중첩 클래스와 중첩 인터페이스  (3) 2022.11.15
타입 변환과 다형성  (1) 2022.11.09
추상 클래스  (2) 2022.10.31
타입 변환과 다형성  (1) 2022.10.31
상속  (1) 2022.10.31
    'JAVA' 카테고리의 다른 글
    • 중첩 클래스와 중첩 인터페이스
    • 타입 변환과 다형성
    • 추상 클래스
    • 타입 변환과 다형성
    옝옹
    옝옹

    티스토리툴바