본문 바로가기

Java/Java Advance

상속과 메서드 오버라이딩의 활용

728x90
반응형

자바에서 상속과 메서드 오버라이딩은 객체 지향 프로그래밍의 중요한 원칙 중 하나입니다. 이를 활용하여 버스 요금 안내 프로그램을 만들어보겠습니다.

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"을 출력합니다.

이러한 방식으로 상속과 메서드 오버라이딩을 활용하여 객체에 따라 다르게 동작하는 프로그램을 구현할 수 있습니다.

728x90
반응형