본문 바로가기
  • Coding & Book
학습단/JAVA 학습단

9. 혼공자 9일차(인터페이스)

by 루이3 2023. 7. 14.

9일차

 

인터페이스

  • 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 합니다.
  • 인터페이스 선언은 class 키워드 대신에 interface 키워드를 사용합니다.
  • 인터페이스 이름은 영어 대소문자를 구분하며 첫글자를 대문자 나머지는 소문자로 하는것이 관례라고 합니다.
  • 객체는 인터페이스에서 정의된 추상 메소드와 동일한 메소드 이름, 매개 타입, 리턴 타입을
    가진 실체 메소드를 가지고 있어야 합니다.
  • 위와 같은 객체를 인터페이스의 구현 객체라고 합니다.
  • 구현 객체를 생성하는 클래스를 구현 클래스라고 합니다.
  • 인터페이스도 다른 인터페이스를 상속할수 있습니다.

 

&인터페이스 생성 방법

FILE -> NEW -> Interface 메뉴를 선택하면 됩니다.

 

상수 필드

  • 상수는 인터페이스에 고정된 값으로 실행시에 데이터를 바꿀수 없습니다.
  • 인터페이스의 상수 필드는 기본적으로 public static final 특성을 갖습니다.
  • 이름은 모두 대문자로 작성해야 합니다.
  • 선언시 초기값을 대입해주어야 합니다.
package sec08.exam01;

public interface Remote {
	public int MAX_VOLUME = 10;
	public int MIN_VOLUME = 0;
}

 

추상 메소드 선언

  • 추상메소드는 리턴타입 메소드 이름, 매개변수만 기술되고 중괄호를 붙이지 않은 메소드를 말합니다.
  • 인터페이스를 통해 호출된 메소드는 최종적으로 객체에서 실행됩니다.
  • 인터페이스의 메소드는 추상 메소드로 선언합니다.
package sec08.exam01;

public interface Remote2 {
	int MAX_VOLUME = 10;
	int MIN_VOLUME = 0;
	
	
	//아래가 추상 메소드 이며 위가 상수 입니다.
	void turnOn();
	void turnOff();
	void setVolume(int volume);
}

 

구현 클래스

  • 인터페이스 타입으로 사용할수 있다고를 클래스 선언부에 implements 키워드를 추가하여
    인터페이스 이름을 명시해줍니다.
  • 인터페이스에 선언된 추상메소드실체 메소드를 선언해야 합니다.

 

 

자동 타입변환

  • 구현객체가 인터페이스 타입으로 변환되는 것을 자동 타입변환이라고 합니다.
  • 쉽게 말해 프로그램이 실행되는데 자동적으로 타입 변환이 일어나는것입니다.

 

필드 다형성

  • 다형성은 같은 타입이더라도 서로 다른 객체를 참조하는데 사용될수 있는 능력을 말합니다.

 

매개 변수 다형성

  • 매개변수의 타입을 상위 클래스로 선언하여 이를 통해 서로 다른 하위 클래스의 객체를 동일한
    매개 변수로 전달할수 있는것을 말합니다.
  • 사용시 코드의 유연성을 높일수 있다고 합니다.

 

 

강제 타입 변환

  • 구현 클래스에 선언된 필드와 메소드를 사용해야 할경우가 발생하는데 이때 강제 타입변환을 사용해서 다시 구현 클래스 타입으로 바꿔주고, 그 구현 클래스의 필드와 메소드를 사용하는 것을 말합니다.

 

구현 클래스 변수 = (구현 클래스) 인터페이스 변수;

 

 

예제


인터페이스)

package sec08.exam01;

public interface Vehicle {
	public void run();
}

구현 클래스)

package sec08.exam01;

public class Bus implements Vehicle {
	@Override
	public void run() {
		System.out.println("버스가 달립니다.");
	}
	
	public void checkFare() {
		System.out.println("승차요금 체크");
	}
}

강제 타입변환)

package sec08.exam01;

public class VehicleExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Vehicle vehicle = new Bus();

		vehicle.run();
		Bus bus = (Bus) vehicle;  
		bus.run();
		bus.checkFare();
	}

}

'학습단 > JAVA 학습단' 카테고리의 다른 글

2주차 완료  (2) 2023.07.15
10. 혼공자 10일차(중첩 인터페이스 & 중첩 클래스)  (0) 2023.07.15
8. 혼공자 8일차(상속)  (0) 2023.07.13
7. 혼공자 7일차(메소드)  (0) 2023.07.11
6. 혼공자 6일차(클래스)  (0) 2023.07.10