문제: 전자 제품 매장 관리 시스템
요구사항
- 기본 클래스 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* 객체지향 생성자, 접근제한자 (1) | 2024.04.18 |
[중앙정보처리학원] Java* 객체지향 프로그래밍 (1) | 2024.04.18 |
[중앙정보처리학원] Java* 메서드 basic (1) | 2024.04.12 |