본문 바로가기
Java/Java 예제

Java interface와 extends 실습 예제

by ssury94 2024. 12. 16.
package entity;

public interface Payable {
    // 상품 가격 반환 메서드
    double getPrice();
    // 결제 처리 메서드
    void processPayment();
}

 

package entity;

public class Product {
    // 기본 상품 클래스
    protected String name;
    protected double price;
    // 디폴트 생성자
    public Product() {
    }
    // 생성자: 상품 이름과 가격 초기화
    public Product(String name, double price) {
        this.name = name;
        this.price = price;
    }
    // 상품 정보 출력 메서드
    // 상품명과 가격을 출력하세요.
    public void displayInfo() {
        System.out.println("상품명: "+name);
        System.out.println("가격: "+ price);
    }

}

 

package entity;

public class DigitalProduct extends Product implements Payable{
    private String downloadLink;
    // 디폴트 생성자
    DigitalProduct(){}
    // 생성자: 상품 이름, 가격, 다운로드 링크 초기화
    public DigitalProduct(String name, double price, String downloadLink) {
        super(name, price);
        this.downloadLink = downloadLink;
    }
    // TODO: 부모 클래스의 생성자를 호출하고, downloadLink를 초기화하세요.


    // 상품 정보 출력 메서드 오버라이드

    // TODO: 부모 클래스의 displayInfo 메서드를 호출하고,
    //  추가로 다운로드 링크 정보를 출력하세요.
    @Override
    public void displayInfo() {
        super.displayInfo();
        System.out.println("다운로드 링크: "+downloadLink);
    }

    // 상품 정보 출력 메서드 오버라이드
    // TODO: 상품 가격을 반환하세요.
    @Override
    public double getPrice() {
        return this.price;
    }
    // Payable 인터페이스의 processPayment 메서드 구현
    @Override
    public void processPayment() {
        System.out.println("결제 완료 되었습니다.");
        System.out.println("다운로드 링크: "+downloadLink);
        // TODO: 결제 완료 메시지와 다운로드 링크 전송 메시지를 출력하세요.

    }
}

 

 

import entity.DigitalProduct;

public class PaymentMain {
    public static void main(String[] args) {
        // DigitalProduct 객체 생성
        DigitalProduct ebook = new DigitalProduct("자바 프로그래밍 기초", 29900, "http://example.com/download/java_ebook");

        // TODO: ebook 객체의 displayInfo 메서드를 호출하세요.
        System.out.println("displayInfo 메서드를 호출");
        ebook.displayInfo();
        System.out.println();

        // TODO: ebook 객체의 getPrice 메서드를 호출하여 가격을 출력하세요.
        System.out.println("getPrice 메서드를 호출");
        System.out.println(ebook.getPrice()+"원");
        System.out.println();


        // TODO: ebook 객체의 processPayment 메서드를 호출하세요.
        System.out.println("processPayment 메서드를 호출");
        ebook.processPayment();

    }
}