클래스간에는 부모 - 자식의 상속관계를 설정할 수 있다.
부모클래스를 A를 자식 클래스를 B 가 상속받을 때 , B는 A의 모든 멤버변수와 메서드를 자신의 것으로 상속받게 된다. 단, private로 설정된 기능은 상속되지 않는다.
extends 키워드를 사용하여 부모 클래스의 이름을 명시한다.
public class 자식클래스 extends 부모클래스{.....}
클래스는 구조를 표현하는 클래스 다이어그램에서 상속은 자식클래스가 부모클래스를 가리키는 화살표로 표현한다

상속관계가 이루어질 때 부모 클래스를 super클래스 라고 한다.
(1) 기존에 존재하는 클래스의 소스수정 없이 기능을 확장하고자 하는경우 상속받아와서 부모의 메서드를 이용할 수 있다.
부모 클래스
public class Calcparent {
public int plus(int x , int y) {
return x + y;
}
public int minus(int x , int y) {
return x - y;
}
}
부모 클래스를 상속받은 자식클래스
public class CalcChild extends Calcparent{
public int times(int x, int y) {
return x * y;
}
public int div(int x, int y) {
if( y != 0) {
}
return x / y;
}
}
자식클래스에는 plus()와 minus()메서드가 정의되어있지 않지만
부모클래스를 상속받았기 때문에 별도의 소스코딩 없이 포함하게되며,
자식클래스에 times(), divide() 메서드를 추가하여 상속받은 메서드에 새로운 기능을 추가하였다.
(2) 여러개의 클래스에서 공통되는 기능을 추출하여 공유하기
글 번호와 글 제목을 가지는 Article 클래스
public class Article {
private int num;
private String title;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
다른데서 접근하지 못하도록 , private로 작성후 getter,setter로만 접근할 수 있게 작성하였다.
Article 클래스를 상속받은 FileArticle클래스
public class FileArticle extends Article{
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
@Override
public String toString() {
return "FileArticle [글번호=" + getNum() + ",글제목 = " + getTitle()
+"파일 = " + fileName + "]";
}
}
Article 클래스를 상속받은 QnaArticle클래스
public class QnaArticle extends Article{
private String answer;
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
@Override
public String toString() {
return "QnaArticle [글번호=" + getNum() + ",글제목 = " + getTitle()
+ ", 답변 = " + answer+"]";
}
}
FileArticle클래스와 QnaArticle클래스에 공통되는 기능을 Article클래스로 묶은뒤
각 각 상속받아 이용하는 예시이다.
이와같이 공통기능을 별도의 클래스로 추출하면 코드의 재사용 및 수정이 용이하다.