NULL

java 인터페이스(interface) 개념정리 본문

Back-end/JAVA

java 인터페이스(interface) 개념정리

1924 2022. 2. 8. 04:06

인터페이스(interface) 역할

1. 인터페이스는 객체를 어떻게 구성해야할지 정리한 설계도이다.

2. 객체 교환성 or 다향성을 높여준다.

3. 인터페이스 변수에 인터페이스가 구현된 다른 구현 객체를 할당해서 사용가능하다.

4. 구현 객체를 직접 몰라도 인터페이스 메소드만 알아도 객체호출 가능.

5. 객체가 인터페이스를 사용하면, 인터페이스 메소드를 반드시 구현해야하는 제약

 

 

인터페이스를 이용해서, 개발코드를 직접 수정하지 않고

사용하고 있는 객체만 변경할 수 있도록 하기 위함이다.

 

 

 

인터페이스 정의방법

    public interface TV{
        public int MAX_VOLUME = 100;
        public int MIN_VOLUME = 0;

        public void turnOn();
        public void turnOff();
        public void changeVolume(int volume);
        public void changeChannel(int channel);
    }

interface를 선언하게 되면 추상메소드와 상수를 정의 할 수 있다.

    public static final int MAX_VOLUME = 100;
    public static final int MIN_VOLUME = 0;

interface에서 변수를 선언하면 컴파일 시 자동으로 위와 같이 적용된다.

 

    public abstract void on();
    public abstract void off();
    public abstract void volume(int value);
    public abstract void channel(int number);

interface에서 정의된 메소드는 모두 추상메소드이다.

위에서 선언된 모든 메소드는 컴파일 시 위외 같이 적용 된다.

 

 

 

인터페이스 사용방법

인터페이스는 사용할때 해당 인터페이스를 구현하는 클래스에서 implements 키워드를 사용한다.

 

public class LedTV implements TV {

	@Override
	public void turnOn() {
		// TODO Auto-generated method stub
		System.out.println("켜다");
	}

	@Override
	public void turnOff() {
		// TODO Auto-generated method stub
		System.out.println("끄다");
	}

	@Override
	public void changVolume(int volume) {
		// TODO Auto-generated method stub
		System.out.println(volume + "로 볼름을 조절하다");
	}

	@Override
	public void changeChannel(int channel) {
		// TODO Auto-generated method stub
		System.out.println(channel + "로 채널을 지정하다");
	}
}

인터페이스가 가지고 있는 메소드 중 하나라도 구현하지 않으면

해당 클래스는 추상클래스가 된다. - 추상클래스는 인스턴스 생성불가능.

 

    public class LedTVExam{
        public static void main(String args[]){
            TV tv = new LedTV();
            tv.on();
            tv.volume(50);
            tv.channel(6);
            tv.off();
        }
    }

1. 참조변수 타입으로 인터페이스를 사용할 수 있다. 이 경우 인터페이스가 가지고 있는 메소드만 사용가능하다.

2. 만약 TV인터페이스를 구현하는 LcdTV를 만들었다면 위에

   코드에서 new LedTV부분만 new LcdTV로 변경해도 똑같이 동작한다.

   동일한 인터페이스를 구현한다는 것은 클래스 사용법이 같다는 것을 의미한다.

 

3. 클래스는 이러한 인터페이스를 여러개 구현할 수 있다.

Comments