dalgorithm
달공의 개발기
dalgorithm
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • Back-end (0)
    • Java (11)
    • 자료구조 (7)
    • Network (31)
    • Database (9)
    • Baekjoon Online (24)
    • 클라우드 (6)
    • Android (15)
      • Kotlin (14)
    • AI (27)
      • Machine Learning&Deep Learn.. (27)
    • Web (23)
      • Webhacking (17)
      • WebProgramming (6)
    • 기술면접 (1)
      • JAVA&자료구조 (0)
      • Spring (0)
      • 컴퓨터구조&운영체제 (0)
      • 네트워크 (0)
      • 데이터베이스 (0)
    • CTF 스터디 (15)
    • 대외활동 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 인공지능
  • cs
  • 클라우드
  • python #백준
  • 자바
  • 딥러닝
  • db
  • Guacamole
  • 네트워크
  • CTF
  • 침입탐지
  • 코드리뷰
  • 머신러닝
  • java
  • kotlin
  • 포너블
  • 데이터베이스
  • 자료구조
  • gcp
  • 웹해킹

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dalgorithm

달공의 개발기

Java_인터페이스
Java

Java_인터페이스

2021. 2. 22. 16:00
728x90

인터페이스는 추상 메소드와 상수로만 이루어져 있다. 구현된 코드가 없기 때문에 인터페이스로 인스턴스를 생성하는 것은 불가능하다. 인터페이스에서 선언한 메소드는 컴파일 과정에서 추상 메소드로 변환된다. 또한, 여기서 선언한 변수는 모두 컴파일 과정에서 값이 변하지 않는 상수로 자동 변환된다. 

 

클래스에서 인터페이스 구현하기

 

:상속에서는 extends 예약어를 사용했다면, 인터페이스에서는 implements 예약어를 사용한다. 클래스에서 implements를 통해 인터페이스를 구현했다면 추상메소드를 구현해주어야한다. 안할 경우, 오류가 발생한다.

 

인터페이스는 인터페이스를 구현할 클래스가 어떤 기능의 메소드를 제공하는지 명시한다. 

 

한 클래스가 여러 인터페이스를 구현하는 경우

 

:Buy buyer = customer; 처럼 customer를 Buy 인터페이스형 변수에 대입하면 형 변환이 일어나 Buy 인터페이스에 선언한 메서드만 호출할 수 있다. Sell형도 마찬가지이다. 그리고 원래의 인스턴스 자료형으로 다운 캐스팅하기 위해서는 instanceof를 사용하여 본래 자료형으로 변환이 가능하다.

package interfaceex;

public interface Buy {
	void buy();
}
package interfaceex;

public interface Sell {
	void sell();
}
package interfaceex;

public class Customer implements Buy,Sell {
	@Override
	public void sell() {
		System.out.println("구매하기");
	}
	
	@Override
	public void buy() {
		System.out.println("판매하기");
	}
}
package interfaceex;

public class CustomerTest {

	public static void main(String[] args) {
		Customer customer = new Customer();
		
		Buy buyer = customer;
		buyer.buy();
		
		Sell seller=customer;
		seller.sell();
		
		if(seller instanceof Customer) {
			Customer customer2 = (Customer)seller;
			customer2.buy();
			customer2.sell();
		}
	}
}


출처: Do it! 자바 프로그래밍 입문_박은종 지음

 

728x90

'Java' 카테고리의 다른 글

Java_Scanner 버퍼 비우기  (0) 2022.07.06
Java_컬렉션 프레임워크  (0) 2021.03.02
Java_추상 클래스  (0) 2021.02.20
Java_상속  (0) 2021.02.20
Java_싱글톤 패턴  (0) 2021.02.19
    'Java' 카테고리의 다른 글
    • Java_Scanner 버퍼 비우기
    • Java_컬렉션 프레임워크
    • Java_추상 클래스
    • Java_상속
    dalgorithm
    dalgorithm

    티스토리툴바