[Java] - 추상 클래스

객체를 직접 생성할 수 있는 클래스를 '실체 클래스'라 한다면

이 실체클래스들의 공통적인 특성을 추출해서 선언한 클래스를 '추상 클래스'라 한다.

 

추상클래스와 실체 클래스는 상속관계이며, 추상 클래스가 부모클래스가 된다.

 

- 추상 클래스의 선언

추상클래스를 선언할 때는 클래스 선언에 abstract 키워드를 붙여야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package chapter07_03;
 
public abstract class phone {
    
    // 필드
    public String owner;
    
    // 생성자
    public phone(String owner) {
        this.owner = owner;
    }
    
    // 메소드
    
    public void turnOn() {
        System.out.println("폰 전원을 켭니다");
    }
    public void turnOff() {
        System.out.println("폰 전원을 끕니다");
    }
}
 
 
cs

abstract를 붙이면 new 연산자를 이용해서 객체를 만들지 못하고, 상속을 통해 자식클래스만 객체를 만들 수 있다.

또한 자식 객체가 생성될 때 super()를 호출해서 추상 클래스의 객체가 생성되므로 추상 클래스도 생성자가 반드시 있어야 한다.

 

-실체클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package chapter07_03;
 
public class smart_phone extends phone{
    // 생성자
    public smart_phone(String owner) {
        super(owner);
    }
    
    // 메소드
    
    public void internetSearch() {
        System.out.println("인터넷 검색을 합니다.");
    }
 
}
cs

-실행 클래스

1
2
3
4
5
6
7
8
9
10
11
12
package chapter07_03;
 
public class phone_example {
 
    public static void main(String[] args) {
        smart_phone my_phone = new smart_phone("leewooseok");
        my_phone.turnOn();
        my_phone.internetSearch();
    }
 
}
 
cs

 

 

- 추상클래스에 대한 오해 

: 추상 클래스라고 해서 반드시 하나 이상의 추상 메소드가 있어야 하는것은 아니다. (추상메소드가 없어도 abstract라고 선언만해도 추상 클래스이다)