Skip to content

클래스

클래스는 **데이터(멤버 변수)**와 **동작(멤버 메서드)**를 하나로 묶어 재사용할 때 사용하는 문법입니다.

클래스 선언과 인스턴스 만들기

클래스는 클래스, 이름으로 선언하고, 인스턴스는 새 이름으로 생성합니다.

yak
클래스, 사람
    약속, __준비__ (이름)
        자신.이름 = 이름
        자신.나이 = 10

    약속, 소개
        자신.이름 + ", " + 자신.나이 + "살" 반환하기

나 = 새 사람("달이")
나.소개 보여주기

멤버 접근과 멤버 메서드 호출

  • 멤버 변수는 인스턴스.이름 형태로 접근합니다.
  • 멤버 메서드는 인스턴스. 약속호출형식으로 호출합니다.
  • 무인자 메서드는 인스턴스.메서드이름처럼 접근하면 자동 호출됩니다.
yak
클래스, 카운터
    값 = 0

    약속, 증가
        자신.값 += 1

c = 새 카운터
c.증가
c.값 보여주기

생성자 __준비__

인스턴스를 만들 때 자동으로 실행되는 약속은 __준비__입니다.

  • 클래스 안에서 약속, __준비__ (...)로 선언합니다.
  • 인자 개수가 다른 __준비__를 여러 개 두면, 인스턴스 생성 시 인자 개수로 선택됩니다.
  • 생성자가 전혀 없으면 새 클래스(아무인자...)처럼 인자를 넣어도 무시하고 생성됩니다.

상속

부모 클래스를 지정하면 멤버를 물려받을 수 있습니다.

  • 클래스, 자식(부모)
  • 클래스, 자식, 부모

두 문법을 모두 사용할 수 있습니다.

yak
클래스, 부모
    약속, __준비__
        자신.이름 = "부모초기화"

    약속, 소개
        자신.이름 반환하기

클래스, 자식(부모)
    약속, __준비__ (나이)
        상위.__준비__
        자신.나이 = 나이

나 = 새 자식(4)
나.소개 보여주기
나.나이 보여주기

자신상위

  • 자신: 현재 인스턴스를 가리킵니다.
  • 상위: 부모 클래스 영역을 가리킵니다. 부모가 없는 클래스에서는 사용할 수 없습니다.

상위를 사용하면 부모 메서드를 호출하거나 부모 멤버를 참조할 수 있습니다.

직접 해보기

계좌 클래스를 만들고, 다음 요구사항을 만족하는 코드를 작성해보세요.

  • __준비__ (초기금액)에서 자신.잔액 초기화
  • (금액) 입금하기 약속으로 잔액 증가
  • (금액) 출금하기 약속으로 잔액 감소
  • 최종 잔액 출력
yak
클래스, 계좌
    약속, __준비__ (초기금액)
        자신.잔액 = 초기금액

    약속, (금액) 입금하기
        자신.잔액 += 금액

    약속, (금액) 출금하기
        자신.잔액 -= 금액

내계좌 = 새 계좌(100)
내계좌. (50 입금하기)
내계좌. (30 출금하기)
내계좌.잔액 보여주기