인터페이스

문세연·2024년 9월 9일

JAVA

목록 보기
11/19

인터페이스 : 인터페이스는 각 객체(인스턴스)를 이어주는 역할을 함.

예 ) 객체 1 -> 메소드 호출 -> 인터페이스 -> 메소드 호출 -> 객체 2
리턴 값 <- <- 리턴 값

객체 1이 인터페이스의 메소드를 호출하면, 인터페이스는 객체 2의 메소드를 호출해주고, 그 결과를 받아서 객체 1로 다시 그 리턴값(결과값)을 호출해주는 것.

근데, 메소드 직접 호출하면 되는데 굳이 왜? 인터페이스 사용할까?
여기서, 갑자기 객체 2가 객체 3으로 변경된다면
-> 객체 1은 인터페이스의 메소드를 사용하기 떄문에 객체 2가 3이 되었든 말든 상관이 크게 없다. 여기서 인터페이스 안 썼다면, 1번은 2번이 3으로 바뀌었을때, 그거에 맞춰서 다시 소스코드를 바꾸는 작업이 필요할것임.

그래서 인터페이스는 다형성 구현에 용이함. 상속도 가능하지만 인터페이스를 주로 사용.

인터페이스는 .java 형태의 소스 파일로 저장이 됨, .class 형태로 컴파일 됨. = 어쩃거나 물리적으로는 클래스와 동일함. 다른 점 = 선언방법과 구성 멤버가 클래스가 다름.

멤버 = 구성원. (필드, 메서드)

클래스 메소드 : 인스턴스 멤버에 접근 불가능.
클래스 멤버에 접근 : 인스턴스 메소드.

링크텍스트

접근 제어자 : private, default, protected, public : 이건 외부의 접근을 제한해 데이터(필드)를 보호하기 위해서.

멤버 변수 : 클래스 내부에서 선언된 변수
지역 변수 : 메서드 내부에서 선언된 변수

인터페이스 선언 = class 키워드 대신 interface 키워드 사용. 접근 제한자 : default, public 가능

인터페이스가 가지는 멤버들을 선언 가능 : 구현 클래스 선언

객체 1이 인터페이스의 추상 메서드를 호출, 인터페이스는 객체 2의 메서드 실행. 객체 2는 인터페이스에 선언된 추상 메서드와 동일한 선언부를 가진 (재정의된) 메서드를 가지고 있어야 한다.

여기서 객체 2 = 인터페이스를 구현한(implement)객체라고 함. 인터페이스에 정의된 추상 메서드에 대한 실행 내용 = 구현되어 있음.

implements 키워드 = 해당 클래스가 인터페이스를 통해 사용할 수 있다는 표시. 인터페이스의 추상 메소드를 재정의한 메소드가 있다는 이야기.

변수 선언과 구현 객체 대입 : 인터페이스 = 하나의 타입. 변수의 타입으로 사용 가능. 객체를 참조하고 있지 않다는 뜻으로 null 사둉 가능.

인터페이스를 통해 구현 객체를 사용하려면, 인터페이스 변수에 구현 객체를 대입. 구현 객체의 번지를 대입해야 함.

링크텍스트

인터페이스 : interface 키워드 : implements : interface

profile
안녕하세용!

0개의 댓글