[JAVA] 14. 상속
#객체지향 개발을 위한 방법론
# 상속
상속이란, 특정 클래스를 구성할 때 기존 클래스의 데이터와 메소드를 부모 클래스에서 그대로 물려받아 중복적인 코드를 줄이는 것과, 하나의 변수 타입으로 여러 종류의 객체를 의미하는 추상화된 방식의 프로그램이 가능하게 하는 객체지향 기법입니다.
클래스 자체는 기능을 만든다라는 뜻 하나의 설계도와 같다
특정값을 가지게 하는 필드
행동을 하게 하는 메소드
보안상 또는 실수로 인하여 은닉화 하라
객체가 애초에 만들어지면서 생성자를 만들어 값을 생성해 놓는다.
1. 사용방법
extends 부모클래스 {
// 추가하고 싶은 내용
// 덮어쓰기
}

예시 1)


● 생성자 : 매개변수가 있는 생성자를 생성하면 빈 생성자는 호출되지 않습니다.



▼상속


★상속을 해줄 클래스는 기본 생성자가 존재해야 합니다.

● 오버라이딩 : 상속관계에서 부모와 같은 메서드 이름을 만들어서 노출되게 한 것.(즉, 부모 메소드를 재정의 하는 것.)


예시 2)

● 자식은 자신의 클래스 호출을 할 때 부모의 클래스를 반드시 한 번은 호출하게 된다.


● 부모의 상속받을 내용을 가져오기 위해서는 this 대신 super라고 하면 된다.

●자신의 필드를 접근할 때는 this. / 부모 클래스 접근할 때는 super. / 내 클래스 내에서 시그니처가 다른 생성자를 호출할 때는 this() 메서드 쓴다.
●상위 내용을 주석 처리한 이유는 자바에서는 값을 바로 넣는 건 보안상 또는 실수로 좋지 않기 때문에 하단 생성자로 입력할 수 있도록 해준다.


예시 3)


● 자식은 자신의 클래스 호출을 할 때 부모의 클래스를 반드시 한 번은 호출하게 된다.
따라서 "Product 클래스 생성자 호출!" 확인되는 것이다.


예시 4)



● 자바에서 클래스를 만들면 무조건 상속을 해주는 object가 있다. ( java.lang.object )

● 자바의 경우에 상속은 무조건 하나의 클래스만 받을 수 있다.


● toString = 객체@메모리주소(16진수) 확인하는 메서드