[JAVA] 추상(abstract)

min82·2023년 8월 3일
0

JAVA

목록 보기
6/8

추상 메소드(abstract method)

  • 선언되어 있으나 구현되어 있지 않은 메소드, abstract로 선언한다.
public abstract String getName();
public abstract void setName(String s);
  • 추상 메소드는 서브 클래스에서 오버라이딩하여 구현해야 한다.

추상 클래스

✅ 종류

1️⃣ 추상 메소드를 하나라도 가진 클래스(abstract 키워드 필수)

abstract class Shape { // 추상 클래스 선언 
	public Shape() {} 
    public void paint() { draw(); } 
    abstract public void draw(); // 추상 메소드
}

2️⃣ 추상 메소드가 하나도 없지만 abstract로 선언된 클래스

abstract class MyComponent { // 추상 클래스 선언 
	String name;
	public void load(String name) {
    	this.name = name;
        }
} 

✅ 상속

1️⃣ 추상 클래스의 단순 상속

  • 추상 클래스를 상속받았으나 추상 메소드를 구현하지 않으면 추상 클래스 됨
  • 서브 클래스도 abstract로 선언해야 함.
abstract class Shape { // 추상 클래스 
	public Shape() { }
	public void paint() { draw(); } 
    abstract public void draw(); // 추상 메소드 
}
abstract class Line extends Shape { // 추상 클래스. draw()를 상속받고 구현X 
	public String toString() { return "Line"; }
}

2️⃣ 추상 클래스 구현 상속

  • 서브 클래스에서 슈퍼 클래스의 추상 메소드 구현(오버라이딩)
  • 서브 클래스는 추상 클래스 아님

✅ 용도

1️⃣ 설계와 구현 분리

  • 슈퍼 클래스에서는 개념 정의
    - 서브 클래스마다 다른 구현이 필요한 메소드는 추상 메소드로 선언
  • 각 서브 클래스에서 구체적 행위 구현
    - 서브 클래스마다 목적에 맞게 추상 메소드 다르게 구현

2️⃣ 계층적 상속 관계를 갖는 클래스 구조를 만들때

profile
8282

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

글 잘 봤습니다.

답글 달기