BE/JAVA

상속 (Inheritance)

MISU 미수 2023. 5. 4. 17:21

🤷‍♀️ 상속이란?

          ① 부모클래스에 만들어진 필드, 메소드를 자식클래스가 물려받음

          ② 유전과 유사

             → 부모가 자식에게 물려주는 것입니다!!

 

 

 상속을 통해 동일한 특성을 재정의할 필요가 없어 자식클래가 간결해져 코드 효율성이 올라갑니다!!

 

상속이 없는 위 클래스들은 말하기, 먹기, 걷기, 잠자기라는 멤버가 중복되어 있습니다.

이 중복되는 멤버들은 메모리 낭비와 효율성이 떨어집니다.

 

상속을 받기 위해서는 중복 멤버변수인 말하기, 먹기, 걷기, 잠자기를 가진 Person 클래스를 먼저 생성하고 정의합니다.

각 클래스에 Person 클래스를 정의시켜주면 됩니다.

    → 이렇게 하게 되면 상속받은 클래스도 Person 클래스의 멤버변수를 사용할 수 있습니다.

         ★ Person 클래스는 상속받은 클래스의 멤버변수를 사용할 수 없습니다.

 

서브클래스(자식클래스)는 슈퍼클래스(부모클래스)의 멤버변수와 메소드에 접근 가능하지만, 슈퍼클래스(부모클래스)는 서브클래스(자식클래스)의 멤버변수와 메소드에 접근 불가능합니다.

 

❄️ 상속의 장점

○ 클래스의 간결화

     멤버의 중복 작성이 불필요하여 코드가 간결해집니다.

○ 클래스 관리 용이

     클래스들의 계층적 분류가 되어 클래스 관리가 용이해집니다.

○ 소프트웨어의 생산성 향상

     클래스 재사용과 확장에 용이합니다. 중복 멤버변수나 메소드가 없기 때문에 클래스를 재사용하여 작성할 수 있으며 클래스 생성 때 사용했던 중복된 멤버변수나 메소드 작성이 불필요하기 때문에 새로운 클래스의 작성 속도가 빨라집니다.

 

🧸 자바 상속 선언

public class Person {
	...
}

public class Student extends Person { // Person을 상속받는 클래스 Student 선언
	...
}

public class StudentWorker extends Student { // Student를 상속받는 StudentWorker 선언
	...
}

extends 키워드를 사용하면 슈퍼클래스(부모클래스)를 확장한다는 개념입니다.

 

중복된 멤버변수와 메소드를 가지고 있는 Person 클래스를 생성하고 Person 클래스를 상속받는 Student 클래스를 생성합니다. StudentWorker 클래스는 Student 클래스를 상속받게 됩니다.

 

🎡 상속의 특징

   ○ 클래스의 다중 상속 지원하지 않음

   ○ 상속 횟수 무제한

   ○ 상속의 최상위 조상 클래스는 java.lang.Object 클래스

        ■ 모든 클래스는 자동으로 java.lang.Object를 상속받음

        ■ 자바 컴파일러에 의해 자동으로 이루어짐