-
자바의 추상 클래스와 인터페이스JAVA/Java 2020. 3. 28. 22:29
자바의 상속 개념에 항상 등장하는 것은 추상 클래스와 인터페이스이다. 어떤 공통점이 있고 어떤 차이가 있는지 항상
애매모호하고 따라서 내용을 정리해 보기로 했다.
추상 클래스는 하나 이상의 추상 메소드를 가지고 있는 클래스를 말하고 추상 메소드란 아직 구현되어 있지 않은
abstract으로 정의된 메서드를 말한다. 클래스에서 상속을 받는다면 추상 메서드가 있을 경우 모두 구현해주어야 한다.
추상클래스는 일반적인 메소드가메서드가 있을 수 있고 추상 메서드가 있을 수도 있다. 단 한 개라도 추상 메서드가 있
다면 그 클래스 앞에 abstract 으로 표기해야 한다. 추상 클래스는 일반 변수들을 가질 수 있다. 추상 클래스는 생성자를
가질 수도 있다.
인터페이스는 메소드들의 형태만 써놓은 것이며 역시 상속하는 클래스들이 해당 메서드들의 내용을 구현해야만 한다.
인터페이스 안의 모든 메소드들은 추상 메서드이며 인터페이스는 final을 붙일 수 없고 변수들은 모두 static이다.
즉 일반변수를 가질 수 없다. 인터페이스는 생성자를 가질 수 없다. 인터페이스를 구현한 클래스를 통하면 인스턴스 화
가 가능하다.
즉 정리하자면 추상클래스는 일반 변수, 일반 메서드, 추상 메서드의 형태이고 인터페이스는 상수(static final)와 추상 메
소드의 형태이다. (자바 8 이후 default 키워드로 일반 메서드의 구현은 가능하다)
이런 외형적인 차이는 있지만 추상 메서드들을 오버라이드 해서 사용한다는 점에서 동일하다. 그러면 어떨 때 이 둘을
구분해서 사용할 수 있을까?
추상 클래스와 인터페이스는 목적이 다르다. 추상 클래스는 슈퍼클래스의 기능을 이용하거나 확장하기 위해서 사
용 되고 다중 상속의 모호성으로 하나만 상속받을 수 있다. 상속에 대한 계층구조를 명확히 표현할 때 추상 클래스만큼
효과적인 방법은 없기 때문이다.
반면 인터페이스는 해당 인터페이스를 구현한 객체들에 대해서 동일한 동작을 약속하기 위해 존재한다. 인터페이스
안의 메서드들은 내용이 없는 상태이나 메서드에 대한 결괏값은 내용을 만들지 않아도 알 수 있으므로 그 메서드가 구현
되고 나면 작동할 결괏값을 알 수 있다.
https://brunch.co.kr/@kd4/6#comment
http://alecture.blogspot.com/2011/05/abstract-class-interface.html
'JAVA > Java' 카테고리의 다른 글
자바의 다형성 이란? (0) 2020.03.30 자바의 리플렉션 (0) 2020.03.28 JVM (Java Virtual Machine) 의 구조 (0) 2020.02.22 Gradle 과 Maven 차이? (0) 2020.01.10 String과 StringBuffer, StringBuilder 클래스 차이 (0) 2020.01.10