Java

쉽게 배우는 JAVA2-4

꽃달린감나무 2021. 8. 15. 15:40
728x90

 

"이 글은 글쓴이가 부스트 코스에 쉽게 배우는 JAVA2를 통해 배우는 점을 적는 공간입니다.

 

interface를 정의하라는 글을 쓰라면 몇 날 며칠이 걸리지도 모른다. 완벽하게 정의할 수 도 없을 것이다.

그래서 interface가 하는 대표적인 기능과 사용법만을 적어보려고 한다.

 

Interface
interface는 하나의 규제이다. 예를 들어 모든 가전제품을 만들 때 어떠한 기능을 하는가? 어떠한 형태를 갖고 있는가에 대해서는 자유롭지만 220V의 콘센트를 사용해야 한다 라는 규제가 있다. 이것이 바로 interface이다. 이런 인터페이스의 장점은 클래스의 기능이 너무 많아져서, 기능들을 선택적으로만 사용자에게 제공하려고 할 때, 또는 다른 사람들과 협업할 때, 기능을 명확히 하고 싶을 때, 여러 목적의 클래스들을 공통적으로 혹은 기능적으로  묶으려고 할 때 등 되게 유용적으로 사용할 수 있다. 

 

package code;
interface Calculable{
	double PI = 3.14;
	int sum(int v1 , int v2);
	
}
interface Printable {
	void print();
}
class RealCal implements Calculable, Printable{
	public int sum(int v1, int v2) {
		return v1+v2;
	}

	@Override
	public void print() {
		System.out.println("This is RealCal!!");
		
	}
}


public class InterfaceApp {

	public static void main(String[] args) {
	
		RealCal c = new RealCal();
		System.out.println(c.sum(2, 1));
		c.print();
		System.out.println(c.PI);
	
		//다형성
		Printable p = new RealCal();
		//System.out.println(p.sum(2,1)); 오류 문장!!!!
		p.print();
		
	}

}

보통 엔터페이스는 첫 글자를 대문자로 시작하고 형용사의 형식으로 많이 정의됩니다.

위 코드의 Interface Calculable의 PI를 보면 interface 또한 변수를 선언할 수 있습니다. 단 선언할 때 무조건 초기화되어야 하며 추후 클래스에서 이 값을 수정할 수 없습니다.  또한 Class RealCal처럼 여러개의 interface를 적용할 수 있으며 한가지만이 적용되는 상속과는 대조적입니다. 인터페이스있는 모든 메소드를 구현해야합니다.

 

위 코드에서 메인 문의 인스턴스 p를 보면 여러개의 인터페이스를 적용했다 하더라도 다형성을 사용하여 자료형 타입을 Printable로 선언했을 때는 Printable의 멤버(변수와 메소드)만을 사용할 수 있으며 다른 인터페이스의 멤버를 사용할 게 되면 System.out.println(p.sum(2,1));과 같이 오류가 발생하게 됩니다!

728x90