본문 바로가기

JAVA

[WEB]DAY14_추상 클래스, 인터페이스

추상 클래스

: 필드 안에 추상적인(미구현인) 메소드가 있는 클래스를 의미한다. 
구현된 일반 메소드는 바디가 있지만 미구현된 메소드는 바디가 없다. 
이 메소드를 추상 메소드라 하고, 추상메소드가 있는 클래스를 추상 클래스라고 한다. 

 

추상클래스를 객체화한다면 생성자 뒤에 중괄호 영역이 열리게 되고 
그 안에서 추상 메소드를 구현해야 메모리에 필드가 할당된다. 

부모의 메소드를 골라서 재정의하고자 할 때에는 일반 메소드로 선언. 
부모의 메소드를 반드시 재정의해야 할 때에는 추상 메소드로 선언. 
부모의 메소드를 재정의하지 못하도록 할 때에는 상수 메소드로 선언. 
- 메소드는 저장공간이므로 리턴타입 앞에 final키워드를 붙인다. 
- 메소드 안의 코드 주소값을 변경할 수 없기에 재정의 불가능. 

추상 메소드

: 선언시 바디가 없이 선언되는 메소드. 
  리턴타입 앞에 abstract키워드를 붙여야 하고 추상클래스 안에서만 선언 가능하다. 

- 추상 클래스를 사용하는 이유 
     추상 클래스를 객체화 하기 위해서는 
     반드시 필드 내에 메소드가 모두 구현된 
     상태여야한다. 추상클래스에 있는 
     추상메소드를 반드시 구현해라! 
     라는 강제성을 나타낼 수 있기 때문이다.


 * 추상 클래스를 상속받았다면 추상 메소드를 반드시 재정의해서 사용해야 한다.

 

- 추상 클래스 선언 
abstract class 클래스명{ 
          abstract void 메소드(); 
}


인터페이스(Interface)

: 추상클래스를 고도화시킨 문법으로 클래스라는 개념 안에 속해 있지만 
추상메소드와 상수만 선언 가능한 타입이다. implements를 통해 자식 클래스들에게 
지정해줄 수 있다. extends와 동시에 사용할 수 있다. 또한 다중 지정이 가능하다. 

인터페이스에 있는 추상메소드들을 골라서 
재정의하고 싶을 때에는 바로 지정하지 않고 
추상 클래스에 먼저 지정을 한다. 이 추상클래스에서 
추상메소드에 바디를 모두 만들어준 후 자식 클래스에 
상속해주면 이제 골라서 재정의할 수 있다.