Java_14_상속

OngTK·2025년 7월 21일

Java

목록 보기
14/35

1. 상속


1) 정의

부모 클래스로 부터 하위 클래스에게 멤버변수, 메소드를 물려주는 행위

2) 목적

한 번 만든 클래스 재사용·활용을 위하여

3) 키워드

extends (확장·연장)

4) 특징

  • 하위클래스가 객체(인스턴스)를 생성하면 상위 클래스도 객체(인스턴)가 생성됨
  • 유지보수가 편리
  • 계층 표현이 가능
  • 재사용
  • ☆★ 다형성 ☆★
    • 하위클래스/타입에서 상위클래스/타입으로 자동 타입 변환이 가능함
    • 상위클래스/타입에서 하위클래스/타입으로 강제 타입 변환이 가능함

5) 사용법

class 하위클래스 extends 상위클래스{ }

6) 주의

  • 상위 클래스는 1개만 존재할 수 있음
  • 하위 클래스가 상위 클래스를 선택

7) 활용

  • 웹/앱 라이브러리
  • 클래스 간의 멤버변수 중복 시, (클래스 설계에서 미리 잡아두는게 좋음)

2. 예시


[문제 1] 기본 상속

1) name(문자열) 멤버 변수를 가진 Person 클래스를 만드세요.
2) Person 클래스를 상속받는 Student 클래스를 만드세요. Student 클래스에는 studentId(정수) 멤버 변수를 추가하세요.
3) main 함수에서 Student 객체를 생성하고, 상속받은 name과 자신의 studentId에 값을 저장한 뒤 모두 출력하세요.


class Person {				
    String name;
}

class Student extends Person {				// Person 클래스를 상속받는 Student 클래스
    int studentID;
}
public class Practice {
    public static void main(String[] args) {
        Student student = new Student();	  // Student 타입의 객체 생성
        student.name = "홍길동";			  
        	// Student 클래스에서는 멤버변수를 선언하지 않았지만,
        	// 상위 클래스인 'Person'클래스의 멤버변수를 이용하여 name 속성을 정의
        student.studentID = 10001;
        	// student 클래스 본연의 멤버변수
        System.out.println("이름 : " + student.name + " 학번 : " + student.studentID);
        	// 출력 >> 이름 : 홍길동 학번 : 10001
    }
}

[문제 2] 메소드 오버라이딩 (Method Overriding)

1) "동물이 소리를 냅니다."를 출력하는 makeSound() 메소드를 가진 Animal 클래스를 만드세요.
2) Animal을 상속받고, makeSound() 메소드를 재정의하여 "고양이가 야옹하고 웁니다."를 출력하는 Cat 클래스를 만드세요.
3) main 함수에서 Cat 객체를 생성하고 makeSound() 메소드를 호출하여, 재정의된 내용이 출력되는지 확인하세요.

class Animal {
    void makeSound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

class Cat extends Animal {
    void makeSound() {
        System.out.println("고양이가 야옹하고 웁니다.");
    }
}

public class Practice {
    public static void main(String[] args) {

        Cat cat = new Cat();
        	// new Cat() : Cat 타입으로 cat 변수 선언
        cat.makeSound();
        	// 출력 >> "고양이가 야옹하고 웁니다."
    }
}
profile
2025.05.~K디지털_풀스택 수업 수강중

0개의 댓글