추상화

hyuko·2022년 11월 10일
0

Java

목록 보기
12/26

추상 클래스

추상 클래스 (abstract)

본 의미 처럼 추상적인 클래스이다.

  1. 추상 메소드가 하나라도 포함이 된다면 해당 클래스는
    추상클래스로 정의 되어야 한다.

  2. 추상 클래스는 생성할 수 없다.

  3. 그 외의 다른 특징은 일반 클래스와 동일하다

※ 특징

구현 코드 없이 메서드의 선언만 있는 추상 메서드를 포함한다.
따로 클래스를 구현하거나 실행하는 것이 아니다.
추상 클래스의 선언은 abstract 예약어를 사용한다.

아래의 코드로 살펴 보겠습니다.

abstract class Factory{
	private String name;
    
    public Factory(String name){
    	this.name = name;
    }
    public abstract void produce(String model);
    public abstract void management();
    public String getName(){
    	return name;
    }
    public void printInfo(){
    	System.out.println("공장의 정보를 출력합니다.");
        System.out.println("공장이름: " + name);
        
    }
}

public class PhoneFactory extends Factory{

    public PhoneFactory(String name) {
        super(name);
        printInfo();
    }

    @Override
    public void produce(String model){
        System.out.println("[ " + model + " ]모델 스마트폰을 생산합니다.");
    }

    @Override
    public void management() {
        System.out.println("스마트폰 공장을 관리합니다.");
    }
}
public class TabletFactory extends Factory{
    public TabletFactory(String name) {
        super(name);
        printInfo();
    }

    @Override
    public void produce(String model){
        System.out.println("[ " + model + " ]모델 태블릿을 생산합니다.");
    }

    @Override
    public void management() {
        System.out.println("태블릿 공장을 관리합니다.");
    }
}
public class Main {
    public static void main(String[] args) {
        PhoneFactory phoneFactory = new PhoneFactory("스마트폰");
        TabletFactory tabletFactory = new TabletFactory("태블릿");

        phoneFactory.produce("아이폰 14");
        tabletFactory.produce("아이패드 프로5");
    }
}

위의 코드를 알아보자면 공장이라는 추상클래스가 존재한다.

그 공장은 무엇을 만들지는 모르지만 공장이다.

그 공장에서는 공장의 이름과 만드는 것의 정보를 담고있다.

그 후에 그 추상을 받아오는 smartphone과 tablet을
각각 만든후에 어떤 공장인지 어떤 물품을 만드는지 정한다.

그 후에 main클래스에서 실행을 한다.

이 처럼 공장은 막연하게 공장일 것이다
무엇을 만드는지는 모르지만 공장이다.

하지만 그 추상을 받는 클래스들에서 재정의를 하여
스마트폰공장, 태블릿공장 등으로 선언이 가능하다.

이와 같이 스마트폰과 태블릿은 만드는 것이고
공장이름과 물품등 같은 정보를 담는 것이 있다면
추상화된 클래스에 각각의 공통점을 모아 넣어 놓고

생성은 각각 스마트폰과 태블릿에서 실행하는 것이
추상화 개념이다

profile
백엔드 개발자 준비중

0개의 댓글