오늘은 자바의 추상 클래스와 인터페이스에 대한 이해한 부분에 대해 정리 해보고 추가적인 정보를 기재하는 방식으로 진행해 볼려한다.
설계만 되어 있고 구현체가 없는 것 -> method의 리턴타입, 함수명, 파라미터만 선언, 중괄호 구현하지 않는다. -> 구현하지않은 내용은 자식 클래스에서 구현하여 method를 완성 시킨다.
- 이는 추상클래스를 상속받는 자식 클래스가 반드시 추상 클래스의 메소드를 재정의 하기 위함이라 이해
- 추상 클래스는 객체 지향 프로그램밍에서 중요한 특징인 다형성을 가지는 메소드의 집합이라 정의한다.
abstract class 클래스이름 {
abstract 반환타입 메소드명();
}
- 위의 코드 처럼 추상 클래스는 동작이 정의되어 있지 않은 추상 메소드를 포함하고 있으므로, 인스턴스를 생성할 수 없다.
- 추상 클래스는 먼저 상속을 통해 자식클래스를 만들고, 만든 자식 클래스에서 추상 클래스의 모든 추상 메소드를 오버라이딩하고 나서 자식 클래스의 인스턴스를 생성한다.
- 추상 클래스는 추상 메소드를 포함하고 있다는 점을 제외하면, 일반 클래스와 모든점이 같다.
-> 생성자와 필드, 일반 메소드 모두 포함할 수 있다.
객체으 특정 행동에 특징을 정의하는 것으로, 추상 클래스에서 메소드만 선언하는 것처럼 사용할 수 있다.
그러나 자바에서는 클래스를 이용한 다중 상속을 할 경우 메소드의 모호성 등 여러가지 문제(?)(무엇이 있을까?)가 발생 한다.
다중 상속이라는 이점을 활용하기 위해 인터페이스(interface)를 사용하고 다른 클래스를 작성할 때 선언된 메소드를 구현하면된다.
접근제어자 interface class 클래스이름 {
public static final 타입 상수이름 = 값;
public abstract 반환타입 메소드명();
}
참고 사이트) http://www.tcpschool.com/java/java_polymorphism_interface