메소드 선언(declaration) : 반환타입, 메소드 이름, 매개변수로 구성
메소드 정의(definition) : 메소드 구현과 도일한 의미 구현부(body)를 가짐
추상 클래스 내의 추상 메소드 : 하위 클래스가 구현해야 하는 메소드
추상 클래스 내의 구현된 메소드 : 하위 클래스가 공통으로 사용하는 메소드(필요에 따라 하위 클래스에서 오버라이딩 해서 사용)
class abstract AbstractClass() {
// 메소드의 바디가 없는 추상 메소드(불완전한 메소드)
// 메소드의 헤더(접근 제어자, 예약어, 반환형, 메소드명, 매개변수)만 존재
// 추상 메소드는 끝에 세미콜론을 붙여 주어야 함
public abstract void method1();
// 완전한 메소드
public void method2() {}
public interface Animal {
public static final String name = "동물";
public static final int = 100;
public abstract void move();
public abstract void eat();
public abstract void bark();
public class Dog implements Animal {
@Override
public void move() {
System.out.println("강아지가 걷습니다.");
}
@Override
public void eat() {
System.out.println("강아지가 먹습니다.");
}
@Override
public void bark() {
System.out.println("강아지가 짖습니다. 멍멍!");
}
Animal animal = new Dog();
추상 클래스 : IS-A "~이다"
인터페이스 : HAS-A "~을 할 수 있는"
추상 클래스 : 공통으로 필요한 기능은 미리 작성해두고, 필요 시에만 오버라이딩
인터페이스 : 모든 메소드가 추상 메소드, 공통된 기능이 없을 때 사용하는 것이 편리