티스토리 뷰

Java

Java(추상 클래스/ enum)

yoooon1212 2024. 4. 24. 17:21

추상 클래스

  • 완전하게 구현되어 있지 않은 하나 이상의 추상 메서드를 가지고 있거나 abstract 키워드를 가지고 있는 클래스이다.
  • 메소드가 미완성이라 추상 클래스는 직접적으로 new 키워드로 객체를 생성할 수 없다.
  • 상속 계층에서 추상적인 개념을 나타내기 위한 용도로 사용된다.
  • 추상 클래스를 상속받는 자식 클래스에서는 반드시 추상 메서드를 재정의해야 한다. 그렇지 않으면 오류가 발생한다.

 

추상 클래스를 상속한 경우 해결방법 2가지

1. 자식 클래스를 추상 클래스로 만들어 버린다.

2. 추상 메서드를 오버라이드 해서 구현 메서드로 재정의한다.

 

 

추상 메서드란?

 int add(int x, int y); // 선언 
 int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님

 

예시)

추상 메서드를 정의하고 { } 구현부 없이 ;(세미클론)으로 종료됨

 

Animal(추상 클래스)의 상속을 받은 Lion(자식 클래스)에서 추상 메서드를 재정의하여 구현함

 

 

 

 

enum(열거형)

데이터의 범주화를 만들고 싶을 때 사용

상수값을 넣을 수 있음

 

Bank를 예시로 작성하자면

public enum ServiceType {

ACOUNT_INFO, //계좌 정보

DEPOSIT, // 입금

WITHDRAW  // 출금

}

enum 명은 Service Type으로, 데이터를 범주화한다.

상수값을 넣을 수 있으므로 대문자로 작성한다.

 

Bank 클래스에 기능을 작성한다.

public void provideService(ServiceType serviceType, Customer customer) {

switch(serviceType) {

case ACOUNT_INFO:

System.out.println(customer.getName() + "계좌 정보 조회를 합니다.");

break;

case DEPOSIT:

System.out.println(customer.getName() + "입금을 진행 합니다.");

break;

case WITHDRAW:

System.out.println(customer.getName() + "출금을 진행 합니다.");

default:

System.out.println("해당 서비스는 제공하지 않습니다.");

}

switch문을 사용 시
serviceType(제어식) 이 ACCOUNT_INFO 면  ACCOUNT_INFO 에 해당하는 문장 sysout 이 출력되고 break 문에 도달하면 switch문을 빠져나간다.
일치하는 값이 없으면 default 문장을 수행한다.

 

 

customer 클래스에서 고객이 은행 서비스를 이용하는 메서드를 작성한다.

public void useBankService(Bank bank) {

//bank.기능();

bank.provideService(ServiceType.DEPOSIT, this);

}

고객이 입금하는 은행서비스를 이용하는 코드를 작성하였다.

 

코드 실행 클래스에서 . 연산자로 기능을 호출해서 출력한다.

Bank bank = new Bank("그린은행"); // 독립적인 생명 주기를 가짐

Customer customer = new Customer("홍길동"); // 독립적인 생명 주기를 가짐

 

customer.useBankService(bank); // 고객이 은행 서비스 사용 기능

// enum type 사용 시 

bank.provideService(ServiceType.ACOUNT_INFO, customer); // 은행의 서비스 제공 기능

 

위의 코드는 고객(홍길동)이 입급을 진행한다고 출력되고, 밑의 코드는 계좌 정보 조회를 한다고 출력된다.

 

이를 연관관계라고 한다.

연관관계는 한 클래스의 객체가 다른 클래스의 객체와 상호작용하지만, 둘 사이의 생명주기에 대한 의존성을 갖지 않고 있다. 고객은 하나의 은행에 계좌를 가질 수 있고, 은행은 여러 고객을 가질 수 있지만 고객의 생명주기는 은행에 의존하지 않는다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함