Post

추상클래스 (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();
    }
}

Untitled

(실습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);

    }
}

Untitled 1

This post is licensed under CC BY 4.0 by the author.