TIL_180422 Interface, Polymorphism
Interface
- ‘implements’를 사용한 하위 클래스에 특정한 메소드가 반드시 존재하도록 강제하는 규제
- 규제를 지키지 않을 시 아예 컴파일조차 되지 않음
- 협업을 위한 클래스의 명세서처럼 사용됨 (어떠한 멤버(변수, 메소드)들을 사용하는가)
- 따라서, 인터페이스 내의 메소드들은 public 접근제어자를 사용
- 상속은 하나의 클래스만 가능한 반면, 인터페이스는 하위클래스가 여러개의 인터페이스를 구현할 수 있음
- 인터페이스도 상속 가능
[Interface VS Abstract]
- 인스턴스는 클래스가 아닌 인스턴스라는 고유한 형태를 가지고 있으나, 추상클래스는 일반 클래스임
- 인스턴스는 구체적 로직을 가지고 있을수 없으나, 추상클래스는 가지고 있을 수 있음
|
|
Polymorphism (다형성)
하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미 (eg.오버로딩)
|
|
- 공통의 부모를 갖는 하위클래스끼리 같은 메소드를 갖는다면, 부모클래스의 데이터타입으로 지정하여 중복없이 코드구현 가능1234567891011121314151617181920public class CalculatorDemo {/* excute 메소드는 두 하위클래스의 공통 부모클래스를가진 데이터타입의 매개변수를 설정함으로써CalculatorDecoPlus, CalculatorDecoMinus두가지로 써야하는 중복을 피할 수 있었음 */public static void execute(Calculator cal){System.out.println("실행결과");cal.run();}public static void main(String[] args) {Calculator c1 = new CalculatorDecoPlus();c1.setOprands(10, 20);Calculator c2 = new CalculatorDecoMinus();c2.setOprands(10, 20);execute(c1);execute(c2);}}