인터페이스

노건우·2023년 7월 19일
0

형변환에서 인터페이스를 간단히 다루었지만 매우 중요한 부분이기에 이정도로는 충분치 않다고 판단하여 따로 한번 더 작성한다.

인터페이스의 사용 이유

  • 협업의 유용함
    자바는 인터페이스를 이용하여 본인이 원하는 클래스를 선택하여 쓸 수 있다. 따라서 클래스를 개발해 놓으면, 다른 개발자가 그대로 개발하기에 아주 유용하다.

  • 교체의 용이
    개발이 안전하지 않은 방식이라고 판단될 경우, 클래스의 이름만 바
    꿔주면 로직은 건드리지 않아도 된다.

  • 다중상속
    다중상속이 가능하기 때문에 여러 기능들을 구조적으로 표현할 수 있다.

인터페이스 예시 코드

복싱 프로그램을 주제로 한번 짜 보았다.

인터페이스 클래스 3개, 일반 클래스 2개를 생성했다.

package interfaces;

public interface boxing {
	public void wibing();
}
package interfaces;

public interface jab {
	public void jab();
	public void left_jab();
	public void right_jab();
}

```package interfaces;

public interface strike {
	public void strike();
	public void left_hook();
	public void right_hook();
}

boxing,jab,strike 3개의 인터페이스 클래스 생성

package interfaces;

public class paquiao implements jab,strike,boxing{
	private String pack_mam;

	public paquiao(String pack_mam) {
		super();
		this.pack_mam = pack_mam;
	}

	@Override
	public void wibing() {
		System.out.println("피한다");
	}

	@Override
	public void strike() {
		System.out.println("강타");
		
	}

	@Override
	public void left_hook() {
		System.out.println("왼훅");
		
	}

	@Override
	public void right_hook() {
		System.out.println("오른 훅");
		
	}

	@Override
	public void jab() {
		System.out.println("쨉");
		
	}

	@Override
	public void left_jab() {
		System.out.println("왼손쨉");
		
	}

	@Override
	public void right_jab() {
		System.out.println("오른손쨉");
		
	}
	
}

파퀴아오 클래스. 인터페이스의 클래스를 상속받아왔다.

package interfaces;

public  class meywether implements jab,strike,boxing{
	private String special_one;

	public meywether(String special_one) {
		super();
		this.special_one = special_one;
	}

	@Override
	public void wibing() {
		System.out.println("회피");
	}

	@Override
	public void strike() {
		System.out.println("스트레이트");
	}

	@Override
	public void left_hook() {
		System.out.println("왼손 훅");
		
	}

	@Override
	public void right_hook() {
		System.out.println("오른손 훅");
		
	}

	@Override
	public void jab() {
		System.out.println("잽");
		
	}

	@Override
	public void left_jab() {
		System.out.println("왼손 잽");
		
	}

	@Override
	public void right_jab() {
		System.out.println("오른손 잽");
		
	}
	
}

메이웨더 클래스. 마찬가지로 상속받아왔다.


구현한 결과이다. 인터페이스는 implements를 통해 상속받는다는 사실을 기억하자.

extends와 implements의 차이

  • extends:
    extends 키워드는 클래스가 다른 클래스를 상속하는 데 사용된다.
    Java에서 클래스는 단일 상속만을 지원하므로, 하나의 클래스는 하나의 클래스만 확장할 수 있다.
    상속을 통해 부모 클래스의 모든 멤버(필드, 메서드)를 자식 클래스가 물려받는다.
    자식 클래스는 부모 클래스의 기능을 확장하거나 재사용하여 새로운 기능을 추가하거나 수정할 수 있다.
    상속을 선언할 때, 부모 클래스는 extends 키워드 뒤에 온다.
  • implements:
    implements 키워드는 클래스가 하나 이상의 인터페이스를 구현하는 데 사용된다.
    인터페이스는 메서드 선언만을 가지며, 구현부는 없다. 따라서 클래스가 인터페이스를 구현하면 해당 인터페이스의 모든 메서드를 반드시 구현해야 한다.
    Java에서 클래스는 여러 인터페이스를 동시에 구현할 수 있다.
    implements 키워드를 사용하여 인터페이스를 구현할 때, extends 키워드와 다르게 여러 인터페이스는 쉼표로 구분한다.
profile
초보 개발자 이야기

2개의 댓글

comment-user-thumbnail
2023년 7월 19일

아주 중요한 정보를 얻었습니다, 감사합니다.

1개의 답글