[Java] interface default/static method

Hyo Kyun Lee·2022년 1월 31일
0

Java

목록 보기
25/49

1. interface의 default, static method

기존 인터페이스에서는 abstract method(명세서만) 선언만 할 수 있었지만, java 5부터는 default 및 static method를 선언할 수 있게 되었다.

이후 해당 메소드에 대한 구현과 오버라이딩 또한 가능해졌다.

2. interface에서의 메소드 구현 및 활용

말 그대로 interface에서 abstract(간단한 명세서) 메소드 작성과 클래스 구현이 나뉘어졌던 방법 이외에도, interface 자체에서도 메소드 구현이 가능하다.

public interface Calculater{
	public int plus(int x, int y);
    
    	default public int exec(int x, int y){
        	return x + y;
        };
}
public class cal{
	public int plus(int x, int y){
    	return x+y;
    	};
}

이처럼 interface 상에서 구현한 메소드는 class에서 구현하고, default 메소드의 경우 따로 클래스에서 구현할 필요가 없게 된다.

public class calTest{
	public void main(String[] args){
    	Calculater c = new cal();
        
        c.plus(2,3);
        c.exec(1,5);
    	}
}

이와 같이 메소드를 활용하기 위해 인터페이스를 타입형으로 지정해주고, 참조변수가 클래스 인스턴스를 바라보게 하도록 구현한다면(문법적으로 올바르도록 구현) 해당 참조변수는 클래스로 구현된 메소드와 인터페이스 내부의 default 메소드 모두 사용할 수가 있다.

public interface Calculator{
	static int exe2(int x, int y){
    		return x + y;
        }
}

만약 위와 같이 static 메소드를 선언해준다면, 기존 static 활용하듯이 인터페이스를 통해 바로 접근해서 사용해야만 해당 메소드를 사용할 수 있다.

public class CalTest{
	public void main(String[] args){
		Calculator.exe2 //인터페이스를 통해 직접적으로 접근하고 활용    		
        }
}

3. default / static method의 목적

기존 인터페이스가 변경되었을 때 모든 class의 구조가 바뀌어야 한다는 단점이 있었다면, default 및 static method 구현 이후엔 따로 선언(class를 통한 구체화) 자체를 할 필요가 없고 바로 메소드를 사용할 수 있다는 점에서 바꿀 필요가 없기 때문에 구현되었다.

0개의 댓글