BE전문가 프로젝트

10. 인터페이스 본문

JAVA

10. 인터페이스

원호보고서 2023. 11. 9. 22:44

인터페이스(interface)

객체와 개발 코드가 서로 통신하는 접점 역할을 한다. 개발 코드를 수정하지 않고 객체를 변경할 수 있도록 하기 위해 사용된다. 하나의 객체가 아닌 여러 객체들과 사용이 가능하여 어떤 객체를 사용하느냐에 따라 결과값이 달라진다.

 

필드 선언

인터페이스는 객체 사용 방법을 정의한 것이므로 인스턴스(객체)와 정적 필드를 선언할 수 없다. 하지만 상수(final static) 필드는 선언이 가능하다. 필드 선언시 final static을 생략하더라도 컴파일시 자동으로 붙게 된다. 상수이기 때문에 대문자로 작성해야 한다.

 

메소드 선언

인터페이스를 통해 호출된 메소드는 객체에서 실행된다. 인터페이스에 선언된 메소드는 추상 메소드이기 때문에 public abstract이라는 특성을 가지게 되는데 이것도 마찬가지로 명시하지 않아도 컴파일 시 자동으로 붙게 된다.

public interface Car {

    //상수(final static
    public int SPEED_AVERAGE = 100;
    
    //추상 메소드
    public void judgeSpeed();
}

 

 

인터페이스 구현

인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출한다. 이러한 객체를 구현 객체라고 하며 구현 객체의 클래스를 구현 클래스라고 한다.

구현 클래스
public class Kia implements Car {

    public int speed;

    public void judgeSpeed() {
    
    	System.out.print("기아");
        
        if(this.speed > AVERAGE_SPEED) {
            System.out.print("평균 이상입니다.");
        }
    }
}
public class HelloWorld {

    public static void main(String[] args) {
        Car car;
        car = new Kia(150);

        car.judgeSpeed();
    }
}

 

 

다중 인터페이스 구현

객체는 다수의 인터페이스 타입으로 사용 가능하다. 쉽게 말하면 구현할 수 있는 interface를 한 개 이산 구현할 수 있다는 의미이다. 구현 시 모든 interface의 추상메소드를 모두 구현해야 한다.

public interface People {

    public void seat(int num);
}
public class Kia implements Car, People {

    public int speed;

    public Kia(int speed) {
        this.speed = speed;
    }

    public void judgeSpeed() {
        if(this.speed > AVERAGE_SPEED) {
            System.out.print("평균 이상입니다.");
        }
    }

    public void seat(int num) {
        System.out.print(num + " 명 탑승 가능합니다");
    }
}

 

'JAVA' 카테고리의 다른 글

12. 중첩 클래스 및 인터페이스  (0) 2023.11.10
11. 추상 클래스와 인터페이스의 차이  (0) 2023.11.09
9. 추상 클래스  (0) 2023.11.09
8. 클래스의 타입 변환 및 다형성  (0) 2023.11.08
7.상속  (0) 2023.11.08
Comments