Language/JAVA

(JAVA)추상 클래스

doheun 2023. 1. 19. 16:04
반응형

추상클래스(abstract)

완전하지 않은 클래스
지금 구현하지 않고 상속 클래스에서 확장하기 위한 클래스

  • 추상클래스를 상속받으려면 추상클래스에 구현된 추상메서드를 반드시 구현해야 한다
  • 추상메서드를 하나이상 가진 클래스
  • new 예약어를 사용해서 객체생성을 할 수 없다.

추상클래스 내에서 추상메서드 외에 다른 메서드를 사용하기 위해서는 자식클래스에서 추상클래스를 상속받고 추상메서드를 반드시 오버라이드 해야한다. 상속강요와 객체생성을 금지하기 위해 abstract class를 선언하기도 한다. 코드가 작성되는 body가 필요없고 abstract를 붙인 메서드명을 선언해주면 사용이 가능하다.


구조


코드

//부모클래스
public abstract class Computer {

    public abstract void display();
    public abstract void typing();

    public void turnOn() {
        System.out.println("전원 ON");
    }

    public void turnOff() {
        System.out.println("전원 OFF");
    }
}

//자식클래스
public class Desktop extends Computer {

    @Override
    public void display() {
        System.out.println("Desktop display()");
    }

    @Override
    public void typing() {
        System.out.println("Desktop typing");
    }
}

//자식클래스
//Computer를 상속받았는데 완전히 구현을 하지 않은 상태 -> 추상클래스
public abstract class Notebook extends Computer {

    @Override
    public void display() {
        System.out.println("Notebook display()");
    }
    //미완성 --> 하위클래스에서 구현해야한다는 것을 표시
    public abstract void typing();
}

//자식클래스
public class MyNotebook extends Notebook {

    @Override
    public void typing() {
        System.out.println("mynotebook");
    }

}

//실행
public class ComputerTest {
    public static void main(String[] args) {
        //추상클래스는 new예약어로 객체 생성 불가
        Computer c1=new Computer();//오류
        Computer c2=new Desktop();
        Computer c3=new Notebook();//오류
        Computer c4=new MyNotebook();
    }
}
반응형

'Language > JAVA' 카테고리의 다른 글

(JAVA)Getter와 Setter  (0) 2023.01.22
(JAVA)인터페이스  (0) 2023.01.20
(JAVA)상속-super, this  (0) 2023.01.19
(JAVA)객체 지향 프로그래밍(OOP)  (0) 2023.01.18
(JAVA)로또  (0) 2023.01.17