반응형
추상클래스와 인터페이스 (abstract, interface)
추상클래스 (abstract) 란?
협업 프로젝트를 진행할 때, 소통을 위해 만들어진 개념입니다.
abstract class 클래스명 { } 생성은 이렇게 할 수 있고, 그 내용으로는 함수가 선언될 수 있으나 그 함수의 구현 내용은 없습니다.
이 추상클래스는 다른 클래스에서 확장(extend) 을 통해 사용할 수 있는데,
반드시 추상클래스가 선언한 모든 추상 깡통함수들을 재정의하도록 강요합니다.
일반적인 상속은 상속받은 클래스가 상위 클래스 중에서 바꾸고 싶은 함수만 재정의하여 사용하지만
추상 클래스를 상속받으면 반드시 모든 깡통 함수를 재정의해야 합니다.
특정 함수들의 오버라이드 (Override) 를 강제할 수 있다는 뜻이죠.
abstract class 란?
abstract class 는 abstract 함수를 가지고 있는 클래스를 말합니다.
추상 클래스의 모든 함수가 모두 강제 구현의 의무를 지닌 추상함수를 포함하는 건 아니라는 뜻입니다.
추상클래스 안에서도 추상함수가 아닌 함수는 필수적으로 구현하지 않아도 됩니다.
대신 추상함수도 아니면서 구현하지 않으면 이클립스(Eclipse) 에서 경고를 보낼 것입니다.
구분 | 추상클래스 | 인터페이스 |
추상메소드의 존재 | 추상메소드를 가지고 있어서 활용하기 전에 그것들을 구현하도록 강제 | |
객체의 생성 | 익명 클래스를 통해서만 직접적인 객체 생성이 가능 | |
사용법 | 클래스에서 확장하여 사용 | 클래스가 구현하여 사용 |
존재가능한 필드 | 추상메소드를 1개 이상 가지고 있을뿐 다른 필드 사항은 일반 클래스와 동일 | 오직 상수, 추상메소드만 존재 |
다중 사용 | 다중 상속 X |
다중 구현 O |
반응형
'Back-End > Java' 카테고리의 다른 글
[Java] java.lang.Error: Unresolved compilation problem (0) | 2020.02.05 |
---|---|
[Java] private 멤버 변수를 사용하는 이유 (0) | 2020.01.28 |
[Java] this 용법과 활용 (0) | 2019.02.17 |
[Java] main 메소드에서 static 을 적는 이유 (0) | 2019.02.17 |
[Java] Java 메모리 구조 (0) | 2019.02.17 |
최근댓글