추상 메소드란 자식 클래스에서 반드시 오버라이딩(Overriding) 해야만 사용할 수 있는 메소드를 의미 한다.
Java에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속 받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함이다.
추상 메소드는 메소드의 시그너치먼 정의된 비어 있는 메소드를 의미한다.
즉, 추상 메소드의 내용을 정의 할 수 없다.
public abstract void insert();
위와 같이 선언부만 있고 구현부가 없다.
Java에서는 하나 이상의 추상 메소드를 포함하는 클래스를 추상 클래스(abstract class)라고 한다.
이러한 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가지는 메소드의 집합을 정의 할 수 있도록 해준다.
즉, 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언해 놓으면, 이 추상 클래스를 상속 받는 모든 클래스에는 이 추상 메소드를 반드시 오버라이딩(Overriding) 해야 한다.
public abstract class Role {
//(...)
public abstract void insert();
//(...)
}
이러한 추상 클래스는 동작이 정의 되어 있지 않은 추상 메소드를 포함하고 있어 인스턴스를 생성 할 수 없다.
추상 클래스는 먼저 상속을 통해 자식 클래스를 만들고, 만든 자식 클래스에서 추상 클래스의 모든 추상 메소드를 오버라이딩하고 나서야 자식 클래스의 인스턴스를 생성할 수 있게 된다.
✔ 일반 클래스 보다 조금더 추상적인 개념의 것을 정의 한다.
✔ 추상 메소드와 그냥 메소드, 멤버필드, 생성자를 일반 클래스 처럼 정의 할 수 있지만, 추상메소드는 내용을 정의 할 수 없다.
✔ 추상 메소드를 정의하면 추상 클래스를 상속 받은 클래스에서는 반드시 추상 메소드를 Overriding
하여 정의 하여야 한다.
✔ abstract class 클래스명
으로 정의 한다.
✔ 추상메소드는 접근제어자 abstract 자료형데이터타입 메소드이름()
으로 정의 한다.
✔ extends
로 상속 받는다.
✔ 다중 상속이 안된다.
참고자료
https://opentutorials.org/module/2495/14140
https://commin.tistory.com/106