자바에서 상속과 메서드 오버라이딩은 객체 지향 프로그래밍의 중요한 원칙 중 하나입니다. 이를 활용하여 버스 요금 안내 프로그램을 만들어보겠습니다.
class BusCharge
{
String section;
public BusCharge(){
}
public BusCharge(String str){
section = str;
}
public void information(){
System.out.println("버스요금안내");
}
public void charge(){
System.out.println("학생:300, 일반인:500, 어르신:공짜");
}
}
class Student extends BusCharge{
public Student(){
super("학생");
}
public void charge(){
System.out.println(" :: 300원\n");
}
}
class Adult extends BusCharge{
public Adult(){
super("일반인");
}
public void charge(){
System.out.println(" :: 500원\n");
}
}
class Old extends BusCharge{
public Old(){
super("어르신");
}
public void charge(){
System.out.println(" :: 공짜\n");
}
}
public class Display
{
public static void main(String args[]){
Student b1 = new Student();
Adult b2 = new Adult();
Old b3 = new Old();
b1.information();
System.out.print(b1.section);
b1.charge();
b2.information();
System.out.print(b2.section);
b2.charge();
b3.information();
System.out.print(b3.section);
b3.charge();
}
}
`BusCharge` 클래스를 부모 클래스로 하는 `Student`, `Adult`, `Old` 클래스를 가지고 있는 자바 프로그램입니다. 각 클래스는 `BusCharge`의 기능을 상속받으면서, `charge()` 메서드를 메서드 오버라이딩하여 각 객체에 맞는 요금 정보를 출력하고 있습니다.
1. `BusCharge` 클래스는 버스 요금과 관련된 정보를 담고 있습니다.
2. `Student`, `Adult`, `Old` 클래스는 `BusCharge` 클래스를 상속받아 `charge()` 메서드를 오버라이딩하여 학생, 일반인, 어르신의 버스 요금을 출력합니다.
3. `Display` 클래스에서는 `Student`, `Adult`, `Old` 객체를 생성하고, 각 객체의 정보와 버스 요금을 출력하고 있습니다.
프로그램을 실행하면 각 객체의 생성자에서 `super()`를 통해 `BusCharge`의 생성자를 호출하여 `section` 변수를 초기화합니다. 그리고 `charge()` 메서드가 오버라이딩되어 객체에 맞는 요금 정보를 출력합니다.
예를 들어, `Student b1 = new Student();`을 생성하면 다음과 같은 순서로 동작합니다.
1. `BusCharge`의 생성자에서 `section` 변수가 "학생"으로 초기화됩니다.
2. `charge()` 메서드가 오버라이딩되어 " :: 300원\n"을 출력합니다.
이러한 방식으로 상속과 메서드 오버라이딩을 활용하여 객체에 따라 다르게 동작하는 프로그램을 구현할 수 있습니다.
'Java > Java Advance' 카테고리의 다른 글
자바에서 super와 this 활용하기 (0) | 2024.01.24 |
---|---|
Spring Framework에서 ModelAndView 사용하기 (1) | 2023.11.22 |
자바 생성자와 상속 관계의 이해 (0) | 2023.10.15 |
자바에서의 클래스 상속과 일반화 관계 (0) | 2023.09.24 |
Java Constructor Overloading - 다양한 객체 초기화 방법 (0) | 2023.09.24 |