DEVLOG

객체지향 프로그래밍 - 6. 상속(2) 본문

Java

객체지향 프로그래밍 - 6. 상속(2)

BINTHEWORLD 2022. 5. 21. 14:26

앞서 상속(1) 포스팅을 할 때 부모클래스인 Person 클래스로부터 자식클래스인 Student 클래스 뿐만 아니라 Teacher 클래스도 상속받을 수 있다.

Teacher.java

// 자식클래스
public class Teacher extends Person{
	private String teacherID; // 교직원 번호
	private int monthSalary; // 월급
	private int workedYear; // 연차
	
	public String getTeacherID() {
		return teacherID;
	}
	public void setTeacherID(String teacherID) {
		this.teacherID = teacherID;
	}
	public int getMonthSalary() {
		return monthSalary;
	}
	public void setMonthSalary(int monthSalary) {
		this.monthSalary = monthSalary;
	}
	public int getWorkedYear() {
		return workedYear;
	}
	public void setWorkedYear(int workedYear) {
		this.workedYear = workedYear;
	}
	
	public Teacher(String name, int age, int height, int weight, String teacherID, int monthSalary, int workedYear) {
		super(name, age, height, weight);
		this.teacherID = teacherID;
		this.monthSalary = monthSalary;
		this.workedYear = workedYear;
	}
	
	public void show() {
		System.out.println("-------------------");
		System.out.println("교사 이름 : " + getName()); // Person에 선언되어 있으므로 상속하니까 바로 사용 가능
		System.out.println("교사 나이 : " + getAge());
		System.out.println("교사 키 : " + getHeight());
		System.out.println("교사 몸무게 : " + getWeight());
		System.out.println("교직원 번호 : " + getTeacherID());
		System.out.println("교사 월급 : " + getMonthSalary());
		System.out.println("교사 연차 : " + getWorkedYear());
	}
	
}

Main.java

- 많은 객체를 찍어내기 위해 아래와 같이 배열과 반복문을 활용하면 편리하다.

// 메인클래스
public class Main {

	public static void main(String[] args) {
		// Teacher 클래스(틀)를 이용하여 인스턴스 생성
		Teacher teacher1 = new Teacher("John Doe", 25, 180, 120, "ABC201", 3000000, 5);
		teacher1.show();
		
		// 학생 배열 만들기
		Student[] students = new Student[100]; // 크기 지정
		for (int i = 0; i < 100; i++) {
			students[i] = new Student("홍길동", 20, 175, 70, i+" ", 1, 4.5);// 초기화
			students[i].show();
		}
	}
}

외부 라이브러리인 Scanner를 활용하여 사용자가 입력한 정보로 객체를 만들어낼 수도 있다.

Main.java

// Teacher.java와 Student.java 활용
import java.util.Scanner;

// 메인클래스
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("총 몇 명의 학생이 존재합니까? ");
		int num = sc.nextInt();
		Student[] students = new Student[num]; // 입력한 숫자만큼 크기 지정
		for (int i = 0; i < num; i++) {
			// Student 클래스 참조하여 필요한 변수 선언
			String name;
			int age; 
			int height;
			int weight;
			String studentID;
			int grade; 
			double gPA;
			
			System.out.print("학생의 이름을 입력하세요 : ");
			name = sc.next();
			System.out.print("학생의 나이를 입력하세요 : ");
			age = sc.nextInt();
			System.out.print("학생의 키를 입력하세요 : ");
			height = sc.nextInt();
			System.out.print("학생의 몸무게를 입력하세요 : ");
			weight = sc.nextInt();
			System.out.print("학생의 학번을 입력하세요 : ");
			studentID = sc.next();
			System.out.print("학생의 학년을 입력하세요 : ");
			grade = sc.nextInt();
			System.out.print("학생의 학점을 입력하세요 : ");
			gPA = sc.nextDouble();
			
			students[i] = new Student(name, age, height, weight, studentID, grade, gPA);
		}
		
		for (int i = 0; i < students.length; i++) {
			students[i].show();
		}
	}
}

 

결과

Comments