Skip to content
- 추상 메소드(abstract method)
- abstract로 선언된 메소드, 메소드의 코드는 없고 원형만 선언
- 추상 클래스(abstract class)
- 추상 메소드를 가지며, abstract로 선언된 클래스
|
// 추상 메소드를 가진 추상 클래스 abstract class Shape { Shape() { ... } void edit() { ... } abstract public void draw(); // 추상 메소드 } |
- 추상 메소드 없이, abstract로 선언한 클래스
|
// 추상 메소드 없는 추상 클래스 abstract class JComponent { String name; void load(String name ) { this.name= name; } } |
- 추상 클래스는 온전한 클래스가 아니기 때문에 인스턴스를 생성할 수 없음
- 추상 클래스 상속
- 추상 클래스를 상속받으면 추상 클래스가 됨
- 서브 클래스도 abstract로 선언해야 함
|
abstract class A { // 추상 클래스 abstract int add(int x, int y); // 추상 메소드 } abstract class B extends A { // 추상 클래스 void show() { System.out.println("B"); } } |
- 추상 클래스 구현
- 서브 클래스에서 슈퍼 클래스의 추상 메소드 구현(오버라이딩)
- 추상 클래스를 구현한 서브 클래스는 추상 클래스 아님
|
class C extends A { // 추상 클래스 구현. C는 정상 클래스 int add(int x, int y) { return x+y; } // 추상 메소드 구현. 오버라이딩 void show() { System.out.println("C"); } } ... C c = new C(); // 정상 |
- 추상 클래스의 목적
- 상속을 위한 슈퍼 클래스로 활용하는 것
- 서브 클래스에서 추상 메소드 구현
- 다형성 실현
- 추상 클래스와 인터페이스 차이
- 추상클래스
- 추상함수가 1개 이상만 있으면 됨
- 구현된 함수가 있어도 됨
- 오버라이딩을 목적으로 추상함수를 사용, 즉 코드의 일부만 수정하기 위해 사용
- 인터페이스
- 모든 함수가 구현이 되어 있지 않고 명시만 되어 있음
- 다중 상속의 문제를 피하기 위해 사용
- 상속받는 자식 클래스에서 모든 함수를 구현해야 함
error: Content is protected !!