추상 클래스
: 필드 안에 추상적인(미구현인) 메소드가 있는 클래스를 의미한다.
구현된 일반 메소드는 바디가 있지만 미구현된 메소드는 바디가 없다.
이 메소드를 추상 메소드라 하고, 추상메소드가 있는 클래스를 추상 클래스라고 한다.
추상클래스를 객체화한다면 생성자 뒤에 중괄호 영역이 열리게 되고
그 안에서 추상 메소드를 구현해야 메모리에 필드가 할당된다.
부모의 메소드를 골라서 재정의하고자 할 때에는 일반 메소드로 선언.
부모의 메소드를 반드시 재정의해야 할 때에는 추상 메소드로 선언.
부모의 메소드를 재정의하지 못하도록 할 때에는 상수 메소드로 선언.
- 메소드는 저장공간이므로 리턴타입 앞에 final키워드를 붙인다.
- 메소드 안의 코드 주소값을 변경할 수 없기에 재정의 불가능.
추상 메소드
: 선언시 바디가 없이 선언되는 메소드.
리턴타입 앞에 abstract키워드를 붙여야 하고 추상클래스 안에서만 선언 가능하다.
- 추상 클래스를 사용하는 이유
추상 클래스를 객체화 하기 위해서는
반드시 필드 내에 메소드가 모두 구현된
상태여야한다. 추상클래스에 있는
추상메소드를 반드시 구현해라!
라는 강제성을 나타낼 수 있기 때문이다.
* 추상 클래스를 상속받았다면 추상 메소드를 반드시 재정의해서 사용해야 한다.
- 추상 클래스 선언
abstract class 클래스명{
abstract void 메소드();
}
인터페이스(Interface)
: 추상클래스를 고도화시킨 문법으로 클래스라는 개념 안에 속해 있지만
추상메소드와 상수만 선언 가능한 타입이다. implements를 통해 자식 클래스들에게
지정해줄 수 있다. extends와 동시에 사용할 수 있다. 또한 다중 지정이 가능하다.
인터페이스에 있는 추상메소드들을 골라서
재정의하고 싶을 때에는 바로 지정하지 않고
추상 클래스에 먼저 지정을 한다. 이 추상클래스에서
추상메소드에 바디를 모두 만들어준 후 자식 클래스에
상속해주면 이제 골라서 재정의할 수 있다.
'JAVA' 카테고리의 다른 글
[WEB]DAY16_마크 인터페이스, 예외처리, API, Javadoc, Object 클래스 (0) | 2020.04.03 |
---|---|
[WEB]DAY15_ 다중 상속, 내부 클래스, 익명 클래스 (0) | 2020.03.16 |
[JAVA]DAY13_casting, instanceof (0) | 2020.03.16 |
[JAVA]DAY12_접근 권한 제어자 (0) | 2020.03.16 |
[JAVA]DAY11_상속 (0) | 2020.03.16 |