본문 바로가기

JAVA

[JAVA] 추상메소드, 추상클래스 (abstract)

반응형

추상메소드 (abstract method) 

  • 추상메소드란 선언은 되어 있으나 코드가 구현되어 있지 않은 메소드이다. 
  • 추상메소드는 abstract키워드를 선언하는 선언부만 존재하고, 구현부는 작성하지 않고 사용한다. 
  • 작성되어 있지 않은 구현부는 자식클래스에서 오버라이딩하여 사용한다. 

추상클래스 (abstract class) 

  • 추상메소드를 가지고 있으면 반드시 추상클래스로 선언해야 한다. 
  • 추상클래스 선언은 abstract키워드로 한다. 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// [추상클래스]
// 객체화를 하지못하게 "강제"
abstract class Shape{ // 객체생성을 위해서 사용xxx -> 클래스들을 정의 O
    int a; // 점,선
    abstract void draw(); 
 
    void showInfo() {
        System.out.println("모양: "+this.a);
    }
    Shape(int a){ // 생성자 정의가능함! -> 자식 생성자에서 호출함!! 
        this.a=a;
    }
}
class Circle extends Shape{
    int radius;
    Circle(int a, int radius){
        super(a);
        this.radius=radius;
    }
    @Override
    void draw() {
        System.out.println("추상메서드에 의해 오버라이딩 강제");
    }
}
 
public class Test02 {
    public static void main(String[] args) {
        //Shape s=new Shape(); 
        // 추상클래스 : 객체화,인스턴스화 xxx
        Circle c=new Circle(1,20);
        c.draw();
    }
}
cs

추상 클래스는 객체를 생성할 수 없다. 

  • 추상메소드를 가진 추상클래스는 동작이 정의되어 있지 않으므로 인스턴스를 생성할 수 없다. 
  • 추상클래스는 먼저 상속을 통해 자식클래스를 만들고 자식클래스에서 추상메소드를 오버라이딩해야 인스턴스를 생성할 수 있다. 
  • 추상클래스의 객체를 생성하는 코드는 컴파일 오류가 발생한다. 

추상클래스 상속 

  • 추상클래스를 상속받는 자식클래스는 추상클래스가 된다. 
  • 추상클래스의 추상메소드를 그대로 상속받기 때문에 오버라이딩을 하지 않으면 자식클래스에 abstract를 붙여 추상클래스임을 명시해야 컴파일 오류가 발생하지 않는다. 
  • 추상메소드가 포함된 추상클래스를 상속받은 자식클래스는 추상메소드를 오버라이딩 해야만 인스턴스를 생성할 수 있다. 

추상클래스 구현 목적 

  • 추상메소드가 포함된 클래스를 상속받는 자식클래스가 반드시 오버라이딩하여 구현하기 위함이다. 
  • 추상클래스는 추상메소드를 통해 자식클래스가 구현할 메소드를 명료하게 알려주는 인터페이스 역할을 한다. 
  • 자식클래스는 추상메소드를 목적에 맞게 구현하는 다형성을 실현한다. 

 

반응형