▶︎ 상속
- 기존 클래스에 기능 추가 및 재정의 해서 새로운 클래스를 정의하는 것.
부모 클래스 : 상속 대상이 되는 기존 클래스 = 상위 클래스, 기초 클래스 자식 클래스 : 기존 클래스를 상속하는 클래스 = 하위 클래스, 파생 클래스
- 부모 클래스의 필드와 메소드가 상속된다. ⇒ 생성자, 초기화 블럭은 상속되지 않는다.

→ 여러 부모한테 상속받는것은 불가능하다. (다중 상속)
⇒ 상속된 자식에서 값을 받고 부모로 보내려면 super을 사용하고, 자신한테 값을 가져올거면 this 사용
☑️ 상속의 대상
자식클래스가 부모클래스로부터 상속을 받게 되면 부모클래스의 필드와 메서드를 물려받을 수 있다. 하지만 접근제어자가 private으로 설정된 필드나 메소드는 상속이 불가하다. 또한 Package가 다른 클래스의 접근제어자가 default인 경우에도 상속을 할 수 없다.
접근제어자에 대해 알아보려면 아래의 링크에서 확인하자.
[Java] 접근제어자란? (Access Modifier)
접근제어자란?접근제어자의 종류접근제어자를 사용하는 이유?접근제어자의 사용범위 접근제어자란?💡자바는 객체지향언어로 다양하게 상속해서 사용할 수 있는 특징이 있는데, 혼란과 사용의 편의성을 위해서 접근제어자 라는것을 사용하고 있다. 접근제어자는 예약어로서 클래스 내부의 변수나, 메서드, 생성자에 대한 접근 권한을 지정할 수 있다. 접근제어자의 종류 접근제어자는 아래의 4가지가 있는데 각자 다른 역할을 하니 확인해보자. Default: 아무것도 없을 때도 해당한다. 같은 패키지 내부에서만 접근 가능하다.Public: 모든 메서드를 외부 클래스에서 접근이 가능하며, 외부 클래스가 사용할 수 있다.Protected: 같은 패키지 내부와 상속 관계의 클래스(다른패키지에 상속가능)에서만 접근할 수 있고 그 외 클래스..

☑️ 상속의 장점
- 그렇다면 상속의 장점은 뭐가 있을까?
- 중복된 코드를 줄일 수 있다.
- 유지 보수가 편해지고 통일성이 생기며 다형성을 구현할 수 있다.
💡
다형성은 객체지향언어의 특징중 하나인데, 하나의 객체나 메소드가 여러형태로 사용될 수 있다는 것이다. 자세한 내용은 학습 후 추후에 업로드해보겠다.
☑️ 상속을 하는방법

//부모 클래스 생성
class 부모{
}
//자식클래스에게 부모클래스 상속
class 자식 extends 부모{
}
✔️ 상속 예제
class People{
String name;
int age;
//메소드(Method)
public void printMyself(){
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
}
class Student extends People{ // 자식클래스 Student에서 부모클래스People을 상속받음
int math_score; //수학성적
int english_score; //영어성적
//생성자
Student(String name, int age, int math, int eng){
super.name = name; //부모 필드로 입력 super사용
super.age = age; //부모 필드
this.math_score = math;
this.english_score = eng;
}
//메소드
public void printScore() {
System.out.println("수학 : " + math_score);
System.out.println("영어 : " + english_score);
}
}
public class Main {
public static void main(String[] args) {
Student student = new Student("아무개", 16, 50, 70); //자식클래스로 생성
student.printMyself(); //부모 메소드에서 호출 -> 이름:아무개 나이:16
student.printScore(); //자식 메소드에서 호출 -> 수학 : 50 영어 : 70
Student student1 = new Student("Jbiscode", 20, 100, 100);
student1.printMyself(); // 이름 : Jbiscode 나이 : 20
student1.printScore(); // 수학 : 100 영어 : 100
}
}
- 여기서
super
키워드는 아까 위에서 설명한것처럼 자식클래스에서 부모클래스의 필드에 접근해서 메소드를 호출할때 사용합니다.