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();
}
}