컴퓨터는 잘못이 없다..

[JAVA]추상 클래스 본문

공부/JAVA

[JAVA]추상 클래스

도토리까꿍v 2024. 4. 13. 23:13
Contents 접기

#핵심 요약

  • 추상 클래스
    • 하나 이상의 추상 메소드를 포함하는 클래스
    • 반드시 구현해야하는 부분에 대해 명시적으로 표현
    • 추상 클래스 자체는 객체 생성 불가 (*단, 익명클래스를 통해서 객체 생성 가능)
  • 추상 메소드
    • 자식클래스에서 반드시 오버라이딩 해야하는 메소드
    • 선언만 하고 구현 내용은 없다.

#소스 코드

추상 클래스와 추상 메소드, 익명 클래스 예제

// Java 프로그래밍 - 추상 클래스

// 추상 클래스 Person
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

추상 클래스와 추상 메소드 연습문제

// Practice
// 아래 Device 추상클래스를 이용하여
// UsbPort1 클래스와 WiFi 클래스를 자유롭게 구현해보세요.

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 클래스
class WiFi extends Device { //빨간 줄 우클릭 > Genorator > implement method 로 반드시 오버라이딩 해야할 메소르를 구현가능하다.
    public WiFi(int id) {
        this.deviceId = id;
    } //생성자.

    void deviceInfo() {

    }

    void connect() {

    }

    void disconnect() {

    }

    void send() {

    }

    void receive() {

    }
}

public class Practice {

    public static void main(String[] args) {
        // Test code
        UsbPort1 usb1 = new UsbPort1(1);
        usb1.deviceInfo();
        usb1.connect();
        usb1.disconnect();
        usb1.send();
        usb1.receive();

        WiFi wifi = new WiFi(0);
    }

}

'공부 > JAVA' 카테고리의 다른 글

[JAVA]인터페이스  (0) 2024.04.20
[JAVA]다형성  (0) 2024.04.13
[JAVA]상속  (0) 2024.04.10
Comments