추상 클래스와 인터페이스 그리고 내부 클래스

추상 클래스

추상 클래스는 자식 클래스들이 특정 메서드를 재정의하여 각자의 구현을 제공하는 상황에서 유용합니다. 이 경우, 부모 클래스는 구체적인 구현 없이 메서드 선언만 제공하며, 이를 추상 메서드라고 합니다.

public abstract class Animal {
    public abstract void move();
}

추상 클래스 사용 예제

abstract class Employee {
    private String id;
    private String name;
    private double salary;

    public Employee() {}

    public Employee(String id, String name, double salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }

    abstract public void work();
}

class Manager extends Employee {
    @Override
    public void work() {
        System.out.println("팀 관리");
    }
}

인터페이스

인터페이스는 추상 클래스보다 더 완전한 추상화를 제공하며, 모든 메서드가 기본적으로 추상 메서드입니다.

public interface SportMan {
    void run();
    void obeyLaw();
    String compete(String event);
}

인터페이스 구현 예제

public class SoccerPlayer implements SportMan {
    @Override
    public void run() {
        System.out.println("축구선수는 빠르게 달린다.");
    }

    @Override
    public void obeyLaw() {
        System.out.println("법을 준수한다.");
    }

    @Override
    public String compete(String event) {
        return "참가: " + event + ", 금메달 획득!";
    }
}

내부 클래스

내부 클래스는 다른 클래스 내에 정의된 클래스로, 외부 클래스와 강한 연관성을 가집니다. 내부 클래스는 멤버 내부 클래스, 정적 내부 클래스, 지역 내부 클래스, 익명 내부 클래스로 분류됩니다.

멤버 내부 클래스 예제

class Outer {
    class Inner {
        void display() {
            System.out.println("내부 클래스 메서드 호출");
        }
    }
}

public class Test {
    public static void main(String[] args) {
        Outer outer = new Outer();
        Outer.Inner inner = outer.new Inner();
        inner.display();
    }
}

익명 내부 클래스 예제

interface Swim {
    void swim();
}

public class Demo {
    public static void main(String[] args) {
        Swim swimmer = new Swim() {
            @Override
            public void swim() {
                System.out.println("익명 클래스로 스위밍 실행");
            }
        };
        swimmer.swim();
    }
}

태그: java 추상클래스 인터페이스 내부클래스

5월 29일 03:13에 게시됨