추상클래스 (Abstract Class)
1. 추상 메소드 (Abstract Method)
- 자식클래스에서 반드시 오버라이딩 해야하는 메소드
- 선언만하고 구현 내용 없음
1
abstract void print();
2. 추상 클래스 (Abstract Class)
- 하나 이상의 추상 메소드를 포함하는 클래스
- 반드시 구현해야 하는 부분에 대해 명시적으로 표현
- 추상 클래스 자체는 객체 생성 불가
1
2
3
4
5
6
abstract class 클래스명 {
...
abstract void print();
}
(실습1 : 추상클래스 예제)
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
abstract class Person {
abstract void printInfo();
}
class Student extends Person {
public void printInfo() {
System.out.println("Student.printInfo");
}
}
public class Main {
public static void main(String[] args) {
// 추상 클래스의 사용
// Person p1 = new Person(); // 자체 객체 생성 불가
Student s1 = new Student();
s1.printInfo();
Person p2 = new Person() {
@Override
void printInfo() {
System.out.println("Main.printInfo");
}
};
p2.printInfo();
}
}
(실습2 : 추상클래스의 추상 메소드들을 override)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
abstract class Device {
int deviceId;
abstract void deviceInfo();
abstract void connect();
abstract void disconnect();
abstract void send();
abstract void receive();
}
// UsbPort1 클래스
class UsbPort1 extends Device {
UsbPort1(int id) {
this.deviceId = id;
}
void deviceInfo() {
System.out.println("id = " + this.deviceId);
}
void connect() {
System.out.println("연결 하였습니다.");
}
void disconnect() {
System.out.println("연결이 해제되었습니다.");
}
void send() {
System.out.println("데이터를 전송합니다.");
}
void receive() {
System.out.println("데이터를 수신합니다.");
}
}
// WiFi 클래스 : IntelliJ에서 우클릭후 Generator -> Implementation Method 구현
class WiFi extends Device {
public WiFi(int id) {
this.deviceId = id;
}
@Override
void deviceInfo() {
}
@Override
void connect() {
}
@Override
void disconnect() {
}
@Override
void send() {
}
@Override
void receive() {
}
}
public class Practice {
public static void main(String[] args) {
UsbPort1 usb1 = new UsbPort1(1);
usb1.deviceInfo();
usb1.connect();
usb1.disconnect();
usb1.send();
usb1.receive();
WiFi wifi = new WiFi(0);
}
}
This post is licensed under CC BY 4.0 by the author.