DEV/Java

[java] java 상속과 오버라이딩

Bi3a 2023. 7. 25. 10:04

728x90

java 상속과 오버라이딩
Java 기초 깨부시기

 

오버로딩에 이어 Person이라는 클래스를 정의하였다.

 - 구성 변수 2개 (이름 / String, 체중 / name)
 - 메서드 2개(eat : 먹는 행위를 정의, sleep : 자는 행위를 정의)

 

class Person 정의

 

1. 상속의 정의 : 어떤 클래스 A가 가진 것을 B에게 물려주는 것

    상속을 받은 B 클래스는 A클래스의 모든 데이터 필드와 메서드를 가지고 있다.

     - 상속해 주는 클래스 : super class / 상속 받는 클래스 : sub class

     - sub class는 여러개 만들 수 있지만 super class는 하나다.

      * 자식은 한 부모로부터만 유전자를 물려받을 수 있듯이

 

2. 상속 방법 : extends를 활용한 상속 

    위에서 정의한 Person 클래스를 슈퍼 클래스로 상속받는 Student, Workman 클래스를 정의하였다.

     - Student : 구성변수 1개(stuno / int), + 구성 메서드 1개(study()) + 메서드 오버라이드 1개

     - Workman : + 구성변수 1개(workno / int), + 메소드 오버라이드 1개

    Student와 Workman 클래스는 Person이 가지고 있는 변수 name, weight와 메서드 eat, sleep을 가지고 있다.

 

Student 클래스는 Person 클래스를 상속받는다.

3. 오버라이딩 : 슈퍼 클래스의 메소드를 서브 클래스에서 재정의 하는 것

    * 오버라이딩 시 서브 클래스에서 재정의된 메서드가 슈퍼 클래스의 메서드보다 우선한다.

    * @Override 표시 하단 메소드 참고

    ex) Person 클래스의 eat 메서드를 Student 클래스에서 동일한 eat 메서드명으로 재정의 

    ex) Person 클래스의 sleep 메소드를 Workman 클래스에서 동일한 sleep 메서드 명으로 재정의

   메소드 오버라이딩을 통해 서브 클래스는 슈퍼 클래스의 메서드를 본인 클래스에 맞게 재정의를 할 수 있을 뿐만 아니라,

   동일한 성격의 메소드가 클래스 상속에 따라 어느 방식으로 파생되었는지 가시성 있는 코드 빌드 및 추적이 가능하다.

 

4. main 작성

main 작성 화면

[결과값]

Name / Weight : Kim / 58
Kim sleeps / - 1 weight
Name / Weight : Kim / 57
Name / Weight : Lee / 73
Lee eats / + 1 weight
student eats more! / + 1 weight
Lee studies hard / - 1 weight
Name / Weight : Lee / 74
Name / Weight : Park / 92
Park sleeps / - 1 weight
workman is extremely tired.. / -1 weight
Name / Weight : Park / 90

 

같이 보면 좋은 포스팅

 

[java] java 다형성, 슈퍼/서브(부모/자식) 클래스 형변환

다형성(Polymorphism)Java에서 제공하는 기능으로 슈퍼(부모) 클래스를 상속받은 서브 클래스의 객체가 슈퍼 클래스의 객체로도 사용되고 서브 클래스의 객체로도 사용되는 등 다양한 형태를 취할

doinitright.tistory.com

 

 

[java] 접근 제어자의 이해와 구현 예제(Access Modifier)

접근 제어자의 이해접근 제어자란?선언한 클래스와 클래스의 멤버(변수와 메서드 등)에 대해 외부에서 접근할 수 있는 범위를 제어하는 키워드입니다.객체 지향에서의 정보 은닉을 목적으로 각

doinitright.tistory.com