728x90
추상 메소드(abstract method)
- abstract 키워드를 사용해서 선언
- 선언되어 있으나 구현되어 있지 않은 메소드
- 형태만 있는 메소드!
- 서브 클래스에서 오버라이딩하여 구현해야함
추상 클래스(abstract class)
abstract class Shape {
public Shape() { }
public void paint() { draw(); }
abstract public void draw();
}
abstract class MyComponent {
String name;
public void load(String name) {
this.name = name;
}
}
- 추상 메소드를 하나라도 가진 클래스
- 추상 메소드가 하나도 없지만 abstract 로 선언된 클래스
🌟 추상 클래스는 객체를 생성할 수 없다!
추상 클래스의 상속
abstract class Shape { // 추상 클래스
public Shape() { }
public void paint() { draw(); }
abstract public void draw();
}
abstract class Line extends Shape { // 추상 클래스
public String toString () { return "Line";}
}
- 추상 클래스의 단순 상속
- 추상 클래스를 상속 받아, 추상 메소드를 구현하지 않으면 추상 클래스가 됨
- 서브 클래스도 abstract 로 선언해야함
- 추상 클래스의 구현 상속
- 서브 클래스에서 슈퍼 클래스의 추상 메소드 구현(오버라이딩)
- 서브 클래스는 추상 클래스가 아님
└ * 슈퍼 클래스에는 추상 메소드를 선언만 해두고 서브 클래스에서 구현
- 추상 클래스를 상속 받고 서브 클래스에서 추상 메소드를 구현(오버라이딩)했으므로 abstract 키워드로 선언 필요 ❌
- 서브 클래스에서 추상 메소드를 구현하지 않으려면 반드시 abstract 선언 필요
- ∴ 서브 클래스는 추상 클래스가 아니므로 객체 생성 가능 !
- 추상 클래스는 추상 메소드를 통해서 서브 클래스가 구현할 메소드를 명료하게 알려주는 인터페이스의 역할을 수행함
추상 클래스의 용도
- 설계와 구현의 분리
- 슈퍼 클래스에서는 개념 정의 (설계 단계)
- 서브 클래스에서 구체적 행위의 구현 (구현 단계)
- └ 각 서브 클래스 마다 목적에 맞게 추상 메소드를 다르게 구현
아래 노션 페이지에 자바 공부 내용에 대해 업로드 합니다!
수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑
개발 환경
작성 플랫폼
728x90
'🧑💻 Language > Java' 카테고리의 다른 글
[Java] 11. 모듈과 패키지 (2) | 2021.05.26 |
---|---|
[Java] 10. 인터페이스 (0) | 2021.05.26 |
[Java] 8. 메소드 오버라이딩 (0) | 2021.05.16 |
[Java] 7. 상속 (0) | 2021.05.08 |
[Java] 6. 메소드 작성과 접근 지정자 (0) | 2021.05.02 |