1. 추상 클래스란?
완전하게 구현되어 있지 않은 메소드를 가지고 있는 클래스. 다른 클래스에게 상속될 목적으로 설계되는 클래스
실제로 인스턴스화될 수 없고, 다른 클래스에서 상속받아 사용되는 용도로 설계 추상 메서드는 구현 코드가 없이 선언만 되어 있는 메서드로, 자식 클래스에서 반드시 구현 추상 메소드를 메모리에 올리려면 상속을 해서 구체적인 애들을 띄울때 같이 띄워야함. (= 인스턴스 되는 애들과 함께 띄워라) 독립적으로 띄울 수 있는 방법은 없다!! > 추상 클래스의 인스턴스를 생성하려고 하면 컴파일 에러
추상 클래스는 오브젝트 XXX
추상화의 용도로만 사용하니까 new 할 수 없는 애들. 존재하지 않는 애들.
1-2. 추상 클래스 특징
1. '추상적'이라 new 불가! 2. 자식들이 추상클래스와 같은 이름의 메소드를 '구현하도록 강제' 할 수 있음.
2. 추상 메소드란?
추상 메서드는 추상 클래스나 인터페이스에서 선언되는 메서드로, 메서드의 선언부만 있고 구현부가 없는 메서드 * 추상 메서드도 자식 클래스에서 반드시 구현
2-1. 추상 메소드 : 바로 구현도 가능
프로토스 종족들은 미사일 쏘기, 주먹질 하기, 불 뿜기 등, 다양한 방식으로 때리지만 쉴드 회복이라는 스킬은 모두가 공통적으로 가지고 있다. 이때, 쉴드 회복은 모두 동일한 기능을 하니까 Protoss에서 아예 구현을 해버린다. - 구현메소드 class Protoss { attack() { // attack은 아무 것도 적지 않고, 자식 클래스에서 자체적으로 구현. 추상메소드 } 쉴드회복() { 쉴드회복 = 100; // 뭐 이런식으로 아예 구현해버린다. 공통적인 요소니까! 구현메소드 / 구현체 } }
3. 추상 클래스 & 추상 메소드의 형태
abstract class 클래스명 { //추상클래스 public abstract void 메소드명(); //추상메소드 }
4. 추상적인 메소드 재정의 (Override)
추상 클래스나 인터페이스에서 선언된 추상 메소드를 하위 클래스에서 구체적인 구현으로 재정의하는 것. 추상 클래스나 인터페이스에서는 추상 메서드의 구현부가 없기 때문에 하위 클래스에서 이를 반드시 구현해야 한다. 하위 클래스에서는 추상 메서드의 시그니처(메소드 이름, 매개변수, 반환 타입)를 동일하게 가져가며 메서드의 내용을 구체적으로 작성하는데, 이것이 바로 추상 메소드의 재정의
@Override 어노테이션을 사용하여 명시 (재정의되었음을 알려주는 역할을 함)
> 개발자의 실수를 방지하고, 코드의 안정성을 높이기 위해 사용
추상클래스 / 추상메소드 : 상속하고, 미완성
Share article