본문 바로가기
얄코의 제대로 파는 자바/섹션5 객체지향 프로그래밍

추상클래스

by 백엔드 개발자 2024. 3. 20.

 

추상 클래스


 

  • 스스로는 인스턴스를 만들 순 없다.(포유류, 차, 곤충의 개념 등등)

  • 자식클래스를 구현하기 위한 클래스로, 자식클래스간 공통분모를 정의하기 위해서 사용한다.
  • 추상클래스들 내부는 protected로 되어 있다. 자식클래스들이 물려받아서 사용해야 하기 때문
  • 추상클래스는 다형성을 가진다. 추상클래스로 자식 자료형을 다 받아줄 수 있다.

 

 

 

추상 메서드 


  • 스스로 선언만 하고 구현을 안함. 자식클래스에서 이걸 구현.
  • 추상클래스에서 추상메서드로 지정한건 자식클래스에서 반드시 구현해주어야 한다. 필요한 기능을 강제할 수 있는 느낌. 안그러면 오류 발생.

  • 추상메서드는 자식클래스에서 구현하라고 만든거라서 접근제어자가 의미가 없다. 구현하는 메서드에서 원하는대로 접근제어자를 사용하면 된다.
  • 정적 메서드는 인스턴스를 생성해서 쓰는게 아니라서 추상메서드로 쓸수가 없다.( static 앞에 abstract를 붙일 수 없다.)

 

 

 

 

 

 

 

 

구체적인 예시


 

추상클래스 FormElement

public abstract class FormElement {
    protected int space;

    public FormElement(int space) {
        this.space = space;
    }

    abstract void func ();
}

 

  • func라는 추상메서드 생성.

 

 

Button 클래스

public class Button extends FormElement {
    private String print;

    public Button(int space, String print) {
        super(space);
        this.print = print;
    }

    @Override
    void func() {
        System.out.println(print + "입력 적용");
    }
}
  • Func 오버라이딩

 

 

Main클래스

public class Main {
    public static void main(String[] args) {

        Button button1 = new Button(2, "Enter");
        Switch switch1 = new Switch(3, true);
        DropDown dropDown1 = new DropDown(5, new String[] {
                "이름 오름차순", "이름 내림차순",
                "크기 오름차순", "크기 내림차순",
                "날짜 오름차순", "날짜 내림차순"
        });

        //  💡 다형성 적용 확인
        clickFormElement(button1);

        clickFormElement(switch1);
        clickFormElement(switch1);
        clickFormElement(switch1);

        clickFormElement(dropDown1);

    }

    public static void clickFormElement (FormElement fe) {
        fe.func();
    }

}
  •  clickFormElement메서드는 FormElement형 필드를 받아서 내부 func함수를 실행시키는 메서드.
  • Button, Switch, DropDown 클래스는 전부 FormElement 자료형의 자식클래스이므로, 모두 자료형을 받아줄 수 있음.(다형성을 보여줌.)
  • 그래서 ClickFormElement로 3개의 자식클래스의 func함수 전부 호출가능.

 

 

출처 

 

제대로 파는 자바 (Java) - by 얄코 강의 - 인프런

적당히 배워서는 살아남을 수 없는 시대. 자바, 한 번에 제대로 파서 마스터하세요!, 자바(Java), 생기초부터 활용까지 강의 하나로 한번에 끝!  🎓 대학교 이메일 계정이 있다면? 👉 얄코 강의

www.inflearn.com

 

'얄코의 제대로 파는 자바 > 섹션5 객체지향 프로그래밍' 카테고리의 다른 글

싱글턴  (0) 2024.03.22
인터페이스  (0) 2024.03.22
클래스의 final  (0) 2024.03.19
다형성  (0) 2024.03.17
상속  (0) 2024.03.16