Java 기초 (인터페이스, 추상 클래스, 다형성)

KimGwangmin·2026년 9월 4일

인터페이스

인터페이스는 명세를 정의하고, 구현체는 명세를 구현한다.
사용자의 입장에선 세부 구현을 몰라도, 인터페이스만 알면 사용할 수 있다.
인터페이스 구현은 implements 키워드를 사용한다.

public interface Mouse {

    void leftClick();    // 좌클릭
    void rightClick();   // 우클릭
    void scrollWheel();  // 스크롤휠
}

public class LogitechMouse implements Mouse {
    @Override
    public void leftClick() {
        // 로지텍 마우스 좌클릭 로직 구현
    }

    @Override
    public void rightClick() {
        // 로지텍 마우스 우클릭 로직 구현
    }

    @Override
    public void scrollWheel() {
        // 로지텍 마우스 스크롤휠 로직 구현
    }
}

추상 클래스

추상 클래스는 자식 클래스가 반드시 구현해야 할 메서드를 포함하는 클래스이다.
추상 클래스 자체는 객체를 가질 수 없다.

public abstract class SchoolMember {
    private final String name;

    public SchoolMember(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public abstract String getRoleName(); // 자식 클래스가 반드시 구현해야 함

    public String getIntro() {
        return getRoleName() + ": " + name;
    }
}

public class Student extends SchoolMember {
    public Student(String name) {
        super(name);
    }

    @Override
    public String getRoleName() {
        return "학생";
    }
}

다형성

OOP의 핵심 개념 중 하나로, 하나의 객체가 여러 타입으로 동작할 수 있는 성질이다.
인터페이스나 추상 클래스를 통해 다형성이 구현된다.

final

final 키워드를 통해 상속을 제한할 수 있다.

final 변수는 한 번 설정된 값을 변경할 수 없다. 참조 타입의 경우 객체의 필드를 바꿀 수는 있다. (C#의 readonly와 유사)
final 메서드는 자식 클래스에서 오버라이드 할 수 없다.
final 클래스는 다른 클래스가 상속받을 수 없다. (C#의 sealed와 유사)

0개의 댓글