본문 바로가기
✨ Java/인터페이스(Interface)

자바(JAVA) - 인터페이스 (Interface) 기초 1

by 환풍 2023. 2. 2.
728x90

인터페이스의 구성요소

1. 메소드의 선언 ( 내용은 없다. )

  • 인터페이스는 변수 없음 ex) int a;  이런게 없다.
  • 인터페이스는 생성자 없음 (객체 생성이 불가)

2. 인터페이스 내부의 메소드는 반드시 접근 제한자를 public으로 사용해야한다.

   (그렇기 때문에 public을 생략해도 알아서 public으로 생각해준다.)

메소드의 선언만 있고, 구현부가 없으며, 모든 메소드는 암묵적으로 public abstract로 선언된다.

필드(멤버 변수)는 상수만 가질 수 있고, 모든 필드는 암묵적으로 public static final로 선언된다.

 

즉, 인터페이스는 클래스를 만들기 위한 설계도라고만 이해하고 넘어가자.

인터페이스는 생성자가 없으므로 객체 생성 불가.

 

위에서 말했듯이 인터페이스는 기능을 제공하지만, 그 기능이 어떤식으로 만들어져 있는지는 없다.

개발자 본인이 직접 채워 넣어줘야 한다.

 

목적
: 인터페이스의 주요 목적은 클래스 간의 계약을 정의하는 거다. 클래스가 인터페이스를 구현하면, 해당 클래스는 인터페이스가 정의한 메소드를 반드시 구현해야 한다. 클래스가 여러개의 인터페이스를 구현할 수 있으며, 이를 통해 다중 상속과 유사한 기능을 제공한다.

 

 


프로젝트에 클래스 Inter01과 인터페이스 Interface01을 생성해주자.

Interface01 인터페이스에 printName() 메소드를 만들어준다.

Class로 만든 Inter01 뒤에 implements Interface01을 넣어준다.

위와 같이 implements Interface01을 넣어주려고하면 빨간줄이 뜨면서 에러가난다.

 

implements 에 마우스를 가져다대면 뜨는 문구.

 

 

메서드 구현을 눌러 만들어진 printName():void 메소드를 체크하고 확인을 눌러준다.

 

위와 같이 Override가 생성되고 printName(){ } 메소드가 만들어 졌다.

 

tv패키지를 생성한 후 패키지안에 클래스로 LgTV, SamsungTV를 하나씩 만들고 실행할 TvUser 클래스도 만들어준다.

 

이렇게 LgTv 클래스와 SamsungTV 클래스 두개를 만든 후

 

코드를 실행하면 위와 같은 결과가 나오게 된다.

위 클래스와 인터페이스를 실행시킬 main 클래스를 새로 만들어 준 후

tv객체를 이어주는 클래스를 만들어 메소드를 호출한다.

 


 

문제없이 실행은 되지만, 새로 만든 객체마다 이렇게 이름을 지정해주면 안번거로울까?

퇴근시간 5분전, 변경사항을 바꿔야 하는 상황에서 이 코드를 변경하고자한다면 나의 워라벨은 박살날 것이다.
 

다음 장에서는 이보다 쉬운 방법으로 인터페이스 사용 방법을 소개하고자 한다.

 

그리고, 인터페이스를 사용하다보면 굳이 이걸 사용해야하나? 하는 의문이 생긴다.

그냥 클래스 만들어서 main메소드에서 호출하는거랑 별반 다를게 없는데 복잡하게 굳이 이걸 왜쓸까?

아래 포스팅에 자세하게 나와있어서 첨부해보았다.

https://luanaeun.tistory.com/m/155

 

반응형

댓글