컴공생의 다이어리

[자바, Java] 인터페이스(interface) 본문

Development/Java

[자바, Java] 인터페이스(interface)

컴공 K 2021. 8. 30. 00:01

인터페이스(interface)

인터페이스란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미한다. 자바의 다형성을 극대화하여 개발코드 수정을 줄이고 프로그램 유지보수성을 높이기 위해 인터페이스를 사용한다.

 

인터페이스는 interface 키워드를 통해 선언할 수 있으며 implements 키워드를 통해 일반 클래스에서 인터페이스를 구현할 수 있다.

public interface Predator {
       boolean chasePrey(Prey p);
       void eatPrey(Prey p);
}

public class Lion implements Predator {
        @Override
        public boolean chasePrey(Prey p) {
               // programming to  chase prey p (specifically for a lion)
        }

        @Override
        public void eatPrey(Prey p) {
               // programming to eat prey p (specifically for a lion)
        }
}

 

인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환할 수 있다. 상속에서의 형 변환과 동일한 의미이다. 자바의 인터페이스는 구현 코드가 없으므로 하나의 클래스가 여러 인터페이스를 구현할 수 있다. 이때, 만일 디폴트 메서드가 중복 되는 경우는 구현하는 클래스에서 재정의해야 한다. 또한 여러 인터페이스를 구현한 클래스는 인터페이스 타입으로 형 변환되는 경우 해당 인터페이스에 선언된 메서드만 사용가능하다.

public interface Sell {
	void sell();
}

public interface Buy {
	void buy();
}

public class Customer implements Buy, Sell{	//Buy 인터페이스와 Sell 인터페이스를 상속
	@Override
	public void sell() {
		System.out.println("customer sell");
	}
    
	@Override
	public void buy() {
		System.out.println("customer buy");
	}
    
	public void sayHello() {
		System.out.println("Hello");
	}
}

 

 

 

 

 

 

https://limkydev.tistory.com/197

 

[JAVA] 자바 인터페이스란?(Interface)_이 글 하나로 박살내자

1. 인터페이스 개념과 역할 인터페이스....이 글하나로 박살내자. (회사에서 존댓말을 많이 쓰기때문에 여기서라도 반말로 글을 써보고 싶음 ㅎ) 인터페이스는 뭘까?? 결론부터 말하면, 극단적으

limkydev.tistory.com

https://tcpschool.com/java/java_polymorphism_interface

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_(%EC%9E%90%EB%B0%94) 

 

인터페이스 (자바) - 위키백과, 우리 모두의 백과사전

인터페이스(interface)는 자바 프로그래밍 언어에서 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다. 이들은 프로토콜과 비슷하다. 인터페이스는 interface라는 키워드를 사

ko.wikipedia.org

출처 : 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online

728x90
Comments