[ 객체지향 ] 상속성

Kong-al·2022년 8월 19일

0816 7일차 수업내용

상속성

클래스간의 상속이란 ?

클래스간에는 부모 - 자식의 상속관계를 설정할 수 있다.
부모클래스를 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클래스로 묶은뒤 
각 각 상속받아 이용하는 예시이다. 
이와같이 공통기능을 별도의 클래스로 추출하면 코드의 재사용 및 수정이 용이하다.
profile
웹개발 공부중!(❁´◡`❁)

0개의 댓글