1. 추상화
public interface myInteface{ public int getSum(int a,int b); }
인터페이스에는 메서드의 상세 구현이 허락되지 않는다. 속성과 기능의 특징만을 추출하여 나열해두고 내용물은 인터페이스를 구현하는 클래스가 채워넣도록 하기 때문에 추상화를 잘 보여주고 있다고 생각한다.
2. 상속성
public interface myInterface{ public int getSum(int a,int b); } public class mySum implements myInterface{ @Override public int getSum(int a,int b){ return a+b; } }
반대로 인터페이스를 구현하는 클래스는 무조건 해당 인터페이스의 속성과 기능들을 빠짐없이 오버라이드하여 실제로 작동하도록 내용물을 채워넣어야 한다. 따라서 상속성을 잘 보여준다.
인터페이스의 유산은 상속포기가 불가능한 악성 채무인 것이다!!
또한 인터페이스를 인터페이스가 상속받는 경우도 가능하다. 이 경우 상속받은 인터페이스의 구성요소들 또한 인터페이스의 구현 클래스가 구현하여야 한다.
3. 다형성
public interface myInterface{ public int getSum(int a,int b); public int getSume(int a,int b, String c); }
인터페이스에 추상화 해놓은 메서드들에도 다형성이 적용된다. 한 가지 이름으로 여러가지 일을 할 수 있다.
4. 캡슐화
public interface Calculate{ public int getSum(int a,int b); public int getDiff(int a,int b); public int getMutil(int a,int b); public double getDiv(int a,int b); }
인터페이스의 내용물을 구현클래스가 채워 넣으려면 public 지정을 해야하기 때문에 접근지정을 통한 보호는 할 수 없다.