[Java] 상속성

hyun-jin·2022년 9월 8일
0

Java

목록 보기
12/14
post-thumbnail

상속성

1. 클래스 간의 상속

  • 클래스간에는 부모-자식의 상속 관계를 설정할 수 있다.
  • 부모클래스 A를 자식클래스 B가 상속받을 때, B는 A의 모든 멤버변수와 메소드를 자신의 것으로 상속받게 된다.
  • 단, private으로 설정된 기능은 상속되지 않는다.

2. 상속 정의 방법

  • extends 키워드를 사용하여 부모 클래스의 이름을 명시할수 있다.

    public class 자식클래스 extends 부모클래스{...}

✔ 클래스의 구조를 표현하는 클래스 다이어그램에서, 상속은 자식 클래스가 부모클래스를 가리키는 화살표로 표현한다.
✔ 상속관계가 이루어 질 때 부모 클래스를 super 클래스 라고 한다.

3. 상속의 활용

3-1. 활용 방법1

  • 기존에 존재하는 클래스의 소스 수정 없이 기능을 확장하고자 하는 경우 사용한다.

ex)

✔ 부모 클래스

  • 부모 클래스더하기, 빼기 메소드를 만들어 줬다.
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;
	}
}

3-2. 활용 방법2

  • 여러 개의 클래스에서 공통되는 기능을 추출하여 공유한다.

ex)

✔ 부모 클래스(Article 클래스)

  • 글 번호와 글 제목을 가지고 있다.
public class Article {
	private int num;
	private String title;
//-----------------getter/setter-------------------
	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로만 접근할 수 있도록 해주었다.

✔ 자식 클래스1 (FileArticle클래스)

  • 부모 클래스인 Article 클래스를 상속 받아온 후 파일이름을 추가해 줬다.
public class FileArticle extends Article{
	private String fileName;
  //------------getter/setter-------------
	public String getFileName() {
		return fileName;
	}
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
 //---------------toString-----------------
	@Override
	public String toString() {
		return "FileArticle [글번호=" + getNum() + ",글제목 = " + getTitle()
				+"파일 = " + fileName + "]";
	}
}

✔ 자식 클래스2 (QnaArticle클래스)

  • 부모 클래스인 Article 클래스를 상속 받아온 후 answer을 추가해 줬다.
public class QnaArticle extends Article{ 
	private String answer;
   //------------getter/setter-------------
	public String getAnswer() {
		return answer;
	}
	public void setAnswer(String answer) {
		this.answer = answer;
	}
  //---------------toString-----------------
	@Override
	public String toString() {
		return "QnaArticle [글번호=" + getNum() + ",글제목 = " + getTitle()
		+ ", 답변 = " + answer+"]";
	}
}

⬆️ 위와 같이 공통 기능을 별도의 클래스로 추출해 내면, 코드의 재사용 및 수정이 용이하다.

0개의 댓글