상속은 자바의 객체지향 프로그래밍에서 중요한 개념으로, 특정 클래스(부모 클래스)의 속성과 메서드를 다른 클래스(자식 클래스)가 물려받아 사용하는 것을 말한다.
super class 또는 base class라고 불린다.subclass 또는 child class라고 불린다. class 자식클래스 extends 부모클래스 {
// 추가적인 필드와 메서드 정의 가능
}
class 클래스명 implements 인터페이스1, 인터페이스2 {
// 인터페이스의 메서드 구현 필요
}
class a extends b // 가능
class a extends b, c // 불가능
// 이름과 전화번호를 속성으로 가지는 기본 사람 클래스
class Person {
protected String name;
protected String phoneNumber;
public Person(String name, String phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
}
public String getName() {
return name;
}
public String getPhoneNumber() {
return phoneNumber;
}
}
// 소속반 속성을 추가로 가지는 학생 클래스
class Student extends Person {
private String className;
public Student(String name, String phoneNumber, String className) {
super(name, phoneNumber);
this.className = className;
}
public String getClassName() {
return className;
}
}
// 과목 속성을 추가로 가지는 선생님 클래스
class Teacher extends Person {
private String subject;
public Teacher(String name, String phoneNumber, String subject) {
super(name, phoneNumber);
this.subject = subject;
}
public String getSubject() {
return subject;
}
}
// 메인 클래스
public class AcademyManagementSystem {
public static void main(String[] args) {
// 학생과 선생님 객체 생성
Student student = new Student("홍길동", "010-1234-5678", "1반");
Teacher teacher = new Teacher("김선생", "010-2345-6789", "수학");
// 정보 출력
System.out.println("=== 학생 정보 ===");
System.out.println("이름: " + student.getName());
System.out.println("전화번호: " + student.getPhoneNumber());
System.out.println("반: " + student.getClassName());
// === 학생 정보 ===
// 이름: 홍길동
// 전화번호: 010-1234-5678
// 반: 1반
System.out.println("\n=== 선생님 정보 ===");
System.out.println("이름: " + teacher.getName());
System.out.println("전화번호: " + teacher.getPhoneNumber());
System.out.println("담당 과목: " + teacher.getSubject());
// === 선생님 정보 ===
// 이름: 김선생
// 전화번호: 010-2345-6789
// 담당 과목: 수학
}
}