Skip to content

[Ch 13] 서브클래싱과 서브타이핑 구분 #46

@taek2222

Description

@taek2222

💡 이슈

  • 오브젝트 책을 읽으면서 책 내용 외에도 다같이 고려해보면 좋을 거 같다고 생각해 문제를 준비했습니다. 🎉
    미리 풀기 금지 🚫

❓ 이유

다음 중 서브클래싱과 서브타이핑을 구분하시오. 🚀

1. 문제

class User {
    public boolean isActive() { return true; }
}

class SuspendedUser extends User {
    @Override
    public boolean isActive() {
        return false;
    }
}

2. 문제

class Timer {
    private long start;

    public void start() {
        this.start = System.currentTimeMillis();
    }

    public long elapsed() {
        return System.currentTimeMillis() - start;
    }
}

class LoggingTimer extends Timer {
    @Override
    public void start() {
        System.out.println("Timer started.");
        super.start();
    }
}

3. 문제

class PaymentProcessor {
    public void process() {
        try { 
            Thread.sleep(1000); 
        } catch (InterruptedException ignored) {
            ...
        }
    }
}

class FastPaymentProcessor extends PaymentProcessor {
    @Override
    public void process() {
        System.out.println("Fast payment");
    }
}

4. 문제

class Temperature {
    private final double celsius;

    public Temperature(double celsius) {
        this.celsius = celsius;
    }

    public double getCelsius() { return celsius; }
}

class FahrenheitTemperature extends Temperature {
    public FahrenheitTemperature(double fahrenheit) {
        super((fahrenheit - 32) * 5 / 9);
    }

    public double getFahrenheit() {
        return getCelsius() * 9 / 5 + 32;
    }
}

📖 관련 페이지

  • 전체 페이지 ☺️

Metadata

Metadata

Assignees

Labels

ch13서브클래싱과 서브타이핑

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions