다른 클래스가 가지고 있는 필드, 메소드들을 새로 작성할 클래스에서 직접 만들지 않고
상속을 받아 새 클래스에서 사용할 수 있는 기능을 말합니다.
그럼 상속을 사용하면 어떤 장점이 있을까요?
- 기존에 만들어져있는 것들을 사용해서 새롭게 작성할 코드의 양이 줄어듭니다.
- 기존에 만든 코드를 공통적으로 여러곳에 사용해 코드의 오류가 생겼을 시 수정이 용이합니다.
- 코드의 중복을 제거하여 생산성이 증가하고 유지보수가 쉬워집니다.
상속을 사용하려면 필수적으로 알아야하는 특징이 있습니다.
- 모든 클래스는 Object클래스의 후손이다.
- 부모클래스의 생성자, 초기화 블록은 상속되지 않는다.
- 부모의 private멤버는 상속은 되지만 직접 접근이 불가하다.
그럼 본격적으로 상속에 대해서 알아보겠습니다.
먼저 상속을 선언하는 형식은 다음과 같습니다.
[접근제한자] class 클래스명 extends 상속할클래스명(부모) {}
public class BusinessMan extends Man{}
그럼 이제 예시를 들어보겠습니다.
제가 만들 방식은 Man이라는 클래스를 상속해주는 방식입니다.
우선 미리 상속할 클래스를 만들어줍니다.
package aaa;
public class Man {
private String name;
public Man() {
super();
}
public Man(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void tellYourName() {
System.out.println("My name is " + this.name);
}
}
그후 상속을 받을 클래스를 만들어줍니다.
package aaa;
public class BusinessMan extends Man{
private String company;
private String position;
public BusinessMan(String name, String company, String position) {
super(name);
this.company = company;
this.position = position;
}
public void tellYourInfo() {
System.out.println("My company is " + this.company);
System.out.println("My position is " + this.position);
super.tellYourName();
}
}
위와같이 Man이라는 클래스에서는 name이라는 변수를 만들었고 이를 BusinessMan이라는 클래스에 상속을 해주었습니다.
그 다음 아래와 같이 실행해보면..
BusinessMan man = new BusinessMan("김개똥","사성", "인턴");
man.tellYourInfo();

사진과 같은 결과가 나오게 됩니다.
이를 통해서 상속의 기본적인 속성으로 BusinessMan은 Man의 기본 속성인 name을 사용할 수 있다는 것을 알 수 있습니다.