문제: 전자 제품 매장 관리 시스템
요구사항
- 기본 클래스 ElectronicProduct 생성
- 이 클래스는 모든 전자 제품의 기본이 되는 클래스입니다.
- 속성:
- productName (제품명, 문자열)
- price (가격, 실수형)
- manufacturer (제조사, 문자열)
 
- 메소드:
- 생성자: 모든 속성을 매개변수로 받아 초기화합니다.
- displayInfo(): 제품의 정보를 출력하는 메소드. 출력 예: "Samsung TV, 가격: 2000000원, 제조사: Samsung"
 
 
- 서브 클래스 Television 생성
- ElectronicProduct의 서브 클래스입니다.
- 추가 속성:
- screenSize (화면 크기, 정수형)
 
- 메소드:
- 생성자: 기본 클래스의 속성과 screenSize를 초기화합니다.
- displayInfo() 메소드를 오버라이드하여 화면 크기 정보도 포함하여 출력합니다.
 
 
- 서브 클래스 Smartphone 생성
- ElectronicProduct의 서브 클래스입니다.
- 추가 속성:
- storageCapacity (저장 용량, 정수형)
 
- 메소드:
- 생성자: 기본 클래스의 속성과 storageCapacity를 초기화합니다.
- displayInfo() 메소드를 오버라이드하여 저장 용량 정보도 포함하여 출력합니다.
 
 
구현할 사항
- Main 클래스에 main 메소드를 구현하여, 각각의 제품 (TV와 스마트폰) 인스턴스를 하나씩 생성하고, 각 제품의 정보를 출력하는 코드를 작성합니다.
실행코드
// Main 클래스와 main 메소드
public class Main {
    public static void main(String[] args) {
        Television tv = new Television("Samsung TV", 2000000, "Samsung", 55);
        Smartphone phone = new Smartphone("iPhone 13", 890000, "Apple", 256);
        System.out.println("TV Info:");
        tv.displayInfo();
        System.out.println("\nSmartphone Info:");
        phone.displayInfo();
    }
}
실행 결과
TV Info:
Samsung TV, Price: 2000000, 제조사: Samsung
Screen Size: 55 inches
Smartphone Info:
iPhone 13, 가격: 890000, 제조사: Apple
저장 용량: 256 GB
package day07.inherit.practice;
public class ElectronicProduct {
    // 속성 선언 필드
     String productName;
     double price;
     String manufacturer;
   // 제품의 정보를 출력하는 메서드
    public void displayInfo() {
        System.out.printf("%s , 가격: %.0f원,제조사: %s", this.productName, this.price, this.manufacturer);
    }
    // %s => String
    // %f => Double
    // %d => Int
    // 퍼센트 쓰는법 : printf에 문자열에 우선 쓸말들 까지해서 퍼센트를 순서대로 쭉 써주고, 문자열닫고 속성들을 순서대로 입력하면 된다.
}속성선언을 필드에 해준다.
package day07.inherit.practice;
public class Smartphone extends ElectronicProduct{
    // 속성
    int storageCapacity;
    // 생성자
    public Smartphone(String productName, double price, String manufacturer, int storageCapacity) {
        this.productName = productName;
        this.price = price;
        this.manufacturer = manufacturer;
        this.storageCapacity = storageCapacity;
    }
    @Override
    public void displayInfo() {
        super.displayInfo();
        System.out.println("\n저장 용량 정보: " + storageCapacity + " GB");
    }
}생성자는 각 자식페이지 들에 만들어준다.
package day07.inherit.practice;
public class Television extends ElectronicProduct {
    // 속성
    int screenSize;
    // 생성자
    public Television(String productName, double price, String manufacturer, int screenSize) {
        this.productName = productName;
        this.price = price;
        this.manufacturer = manufacturer;
        this.screenSize = screenSize;
    }
    @Override
    public void displayInfo() {
        super.displayInfo();
        System.out.printf("\nScreen Size: %d Inches\n", this.screenSize);
    }
}각 페이지에만 해당 할 수 있는 속성들은 각페이지에 만들어주고 그에대한 생성자를 추가해준다.
Override 는 부모클래스를 잘 계승했는지 확인하는 체킹 장치이다. this. displayInfo(); 가 될 수도 있었겠지만. super를 사용해야
부모클래스를 계승할 수가 있다.
'Java' 카테고리의 다른 글
| Java* 객체지향 접근 제한자 (Access Modifier) (0) | 2024.04.22 | 
|---|---|
| Java* 객체지향 상속 (Inheritance) (0) | 2024.04.22 | 
| Java* 객체지향 생성자, 접근제한자 (0) | 2024.04.18 | 
| Java* 객체지향 프로그래밍 (0) | 2024.04.18 | 
| Java* 메서드 basic (0) | 2024.04.12 | 
 
                              
                             
                              
                             
                              
                            