728x90
추상(abstract)
추상은 실체 간에 공통되는 특성을 추출한 것을 말한다.
추상 클래스(abstract class)
추상적으로 밖에 그려지지 않은 클래스로, 클래스가 전체적인 구성을 다 가지지 못한 채 설계만 되어 있는 클래스다.
객체를 생성할 수 있는 클래스를 실체 클래스라 하면, 실체 클래스의 공통적인 필드나 메소드를 추출해서 선언한 클래스가 추상 클래스다.
추상 클래스는 실체 클래스의 부모 역할을 한다.
실체 클래스는 추상 클래스를 상속해서 공통적인 필드나 메소드를 물려 받을 수 있다.
실체 클래스의 공통되는 필드와 메소드를 추출해서 만들어진거라 new 연산자를 사용하여 객체를 직접 생성할 수 없다.
class Child extends Parent {...}
실체 클래스를 만들기 위한 부모 클래스 용도로 사용되며 extends 뒤에만 올 수 있다.
추상 클래스 선언
public abstract class 클래스명 {...}
abstract의 위치는 public 기준으로 앞이나 뒤면 된다.
추상 클래스는 자식 클래스에 의해 완성되어 클래스 자체로의 기능은 약하지만, 새로운 기능을 정의하는 틀이 된다.
추상 클래스는 추상 메소드를 선언할 수 있으며, 일반 메소드도 포함시킬 수 있다.
추상 메소드(abstract method)
// 추상 클래스 + 추상 메소드
public abstract class Parent {
abstract public void play()
}
// 추상 클래스 상속한 자식 클래스
public class Child1 extends Parent {
@Override
public void play() { ... }
}
// 자식 클래스인데 메소드 재정의를 하지 않아 추상 클래스로 변환
abstract class Child2 extends Parent { ... }
추상 메소드가 하나 이상 포함되면 무조건 추상 클래스로 선언해야 한다.
자식 클래스에서 반드시 재정의(overriding)해야 한다.
재정의 하지 않는다면 추상 클래스로 변경해야 한다.
추상 메소드는 몸체가 없고 선언부만 존재한다.
일반 메소드와의 차이점은 abstract 키워드가 붙고, 메소드 실행 내용인 중괄호 {}가 없다.
728x90
'IT > Java' 카테고리의 다른 글
[Java] Interface 상수 필드 (0) | 2024.03.12 |
---|---|
[Java] Interface (0) | 2024.03.11 |
[Java] instanceof (0) | 2024.03.08 |
[Java] 다형성(Polymorphism) (0) | 2024.03.08 |
[Java] 자동 타입 변환 & 강제 타입 변환 (0) | 2024.03.08 |