구현 코드 없이 메서드의 선언 만 있는 추상 메서드(abstract method)를 포함한 클래스
메서드 선언(declaration) : 반환타입, 메서드 이름, 매개변수로 구성
예) int add(int x, int y); // 선언, 추상 메서드
메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body) 를 가짐 ({ })
예) int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님
모든 메서드가 구현 된 클래스라도 abstract로 선언되면 추상 클래스로 인스턴스화 할 수 없다.
추상 클래스의 추상 메서드는 하위 클래스가 상속 하여 구현해야 한다.
모든 메서드가 추상 메서드로 선언된다. (public abstract ...)
모든 변수는 상수로 선언된다. (public static final ...)
클래스나 프로그램이 제공하는 기능을 명시적으로 선언하여, 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있다.
어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미이다.
하나의 인터페이스를 여러 객체가 구현하게 되면 클라이언트 프로그램은 인터페이스의 메서드를 활용하여 여러 객체의 구현을 사용할 수 있다. (다형성)