객체를 직접 생성할 수 있는 클래스를 '실체 클래스'라 한다면
이 실체클래스들의 공통적인 특성을 추출해서 선언한 클래스를 '추상 클래스'라 한다.
추상클래스와 실체 클래스는 상속관계이며, 추상 클래스가 부모클래스가 된다.
- 추상 클래스의 선언
추상클래스를 선언할 때는 클래스 선언에 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라고 선언만해도 추상 클래스이다)
'Java' 카테고리의 다른 글
[Java] - 자바 인터페이스, 다중 인터페이스, 인터페이스의 사용방법 (0) | 2020.09.24 |
---|---|
[Java] - 추상 메소드와 오버라이딩 ( 메소드 다형성) (0) | 2020.09.24 |
[Java] - Getter, Setter 메소드 (0) | 2020.09.21 |
[Java] - 접근제한자 (0) | 2020.09.21 |
[Java] - 싱글톤 (0) | 2020.09.21 |