본문 바로가기
Programming/Java

5장. 상속 #4 추상 메소드/클래스

by jaegom 2020. 6. 13.

추상 메소드, 클래스(abstract method, class)

1. 추상 메소드 (abstract method) : 선언되어있고 구현 안 된 메소드

  • 형식 : (접근제한자) abstract (반환타입) Method1();
  • 추상메소드는 서브클래스에서 오버라이딩으로 구현. 추상 클래스는 비워둔다.

2. 추상 클래스 (abstract class)

  • 형식 : (접근제한자) abstract class Class1 {} 
  • 추상 클래스는 인스턴스 생성 불가능
  • 종류

 

 

i) 추상 메소드를 하나라도 가진 클래스

ex)
abstract class Shape {
public Shape() {}
public void paint() { draw(); }
abstract public void draw();
}

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

ex)
abstract class MyComponent {
String name;
public void load(String name) {
this.name = name;
}
}

 

4. 추상 클래스의 상속

  • 종류
    i) 단순 상속
  • 추상 클래스를 상속받아 추상 메소드를 구현하지 않아도 자동으로 추상 클래스가 된다.
  • 서브클래스도 abstract를 선언해줘야함
    ex)
    abstract class Shape { // 추상 클래스
    public Shape() { }
    public void paint() { draw(); }
    abstract public void draw(); // 추상 메소드
    }
    abstract class Line extends Shape { // 추상 클래스. draw()를 상속받기 때문
    public String toString() { return "Line"; }
    }

5. 추상 클래스는 왜 쓰는가?

  • 설계와 구현의 분리 : 슈퍼클래스의 메소드를 상속받을 서브클래스들이 있고 그들마다 용도가 다를 경우 상속할 메소드를 추상메소드로 선언한다.

댓글