상속의 정의와 장점 ( 자세히 )Backend/java2018. 8. 9. 18:25
Table of Contents
반응형
상속의 정의와 장점1. 상속이란 ??ㄱ. 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것ㄴ. 두 클래스를 조상과 자손으로 관계를 맺어주는 것ㄷ. 자손은 조상의 모든 멤버를 상속받는다. ( 생성자 , 초기화블럭은 제외)ㄹ. 자손의 멤버개수는 조상보다 적을 수 없다.( 같거나 or 많다 )ㅁ. 형태 : class 자손클래스 extends 조상클래스 {// …}Ex ) class Point { // 부모Int x ;Int y;}class Point3D{ //자식Int x;Int y;Int z;}Class Point3D extends Point{Int z;}간단히 얘기해서... 상속은 클래스를 정의할 때 기존의 클래스를 이용하는 것입니다.기존의 클래스를 재사용해서 새로운 클래스를 만드는 것이지요.상속을 통해 새로운 클래스를 정의하는 방법은 아주 쉽습니다.새로 정의할 클래스 이름 뒤에 키워드 extends를 써주고, 상속받고자하는 클래스를 적어주기만 하면 됩니다.나머지는 일반적으로 클래스를 정의할 때와 똑같고요...그러면 이 두 클래스는 서로 조상과 자손의 관계가 맺어지고,자손은 조상의 모든 멤버, 즉 멤버변수와 메서드를 그대로 상속받게 됩니다.이 때, 자손은 조상의 모든 멤버를 그대로 상속받게 될 뿐....원하는 것만 골라서 상속받을 수가 없습니다.그래서 자손의 멤버개수는 조상의 멤버개수보다 적을 수가 없습니다.항상 같거나 많을 수 밖에 없겠죠...다만... 생성자와 초기화 블럭은 상속되지 않습니다.각 클래스의 생성자에는 자신에 정의된 멤버변수만을 초기화하는 코드와 조상의 생성자를 호출하는 코드를 넣어서...상속받은 멤버변수들은 조상의 생성자에 의해 초기화되도록 합니다.2차원 좌표의 한 점을 표현하기 위한 Point클래스가 위와 같이 정의되어 있을 때...3차원 좌표의 한 점을 표현하기 위한 Point3D클래스는... 위쪽과 같이... x,y,z.... 모두 3개의 정수값으로정의할 수 도 있지만...기존의 Point클래스로부터 상속받아서 정의하면.... 위쪽과 같이 할 수 있습니다.자손클래스는 조상클래스에 정의된 멤버들을 그대로 상속받기 때문에... Point3D클래스는조상인 Point클래스에 정의된 멤버변수 x와 y를 모두 상속받게 됩니다.그래서 Point3D클래스에는... 새로운 멤버변수 z만 정의하면 되는 것입니다.즉, 자손 클래스에는 추가적인 부분만 정의하면 되는 것입니다.항상 자손인 Point3D클래스가 조상인 Point클래스를 완전히 포함하고 있죠.만일 Point3D클래스를 조상으로 하는 다른 클래스를 정의한다면...이 두 클래스의 모든 멤버를 포함하는... 보다 확장된 형태가 될 것입니다.좀전에 얘기한 것과 같이... 자손은 조상의 모든 멤버를 그대로 상속받기 때문에자손의 멤버 개수는 절대로 조상의 멤버 개수보다 적을 수 없습니다. 항상 같거나 많죠.그래서...상속에 상속을 거듭할 수록... 멤버의 개수가 점점 많아집니다.상속에 사용되는 키워드 extends의 의미 역시... 조상클래스를 확장한다...는 것이고요.이 두 개의 Point3D클래스 모두... 인스턴스를 생성하면 3개의 정수값을 저장할 수 있는 공간이 만들어진다는 것은 같지만...위쪽의 Point3D클래스와 Point클래스에는 아무런 관계가 없는 반면...위쪽의 코드는 Point클래스가 조상클래스가 되고 Point3D클래스는 자손클래스가 되어서...이 두 클래스간에는 조상-자손의 관계가 성립된다는 것이 다른 점입니다.코드가 같다고 해서... 무조건 재사용해야 하는 것은 아니고요...기존의 클래스를 바탕으로 보다 확장된 기능의 클래스를 설계할 때... 상속을 이용하시면 됩니다.아무것도 없는 상태에서 클래스를 새로 만드는 것보다...자신이 원하는 기능과 가장 유사한... 기존의 클래스를 상속받아서...기능을 추가적으로 정의해주는 것이 편리하겠죠.그래서... 조상클래스를... 다른 클래스를 정의하는데... 바탕이 된다고 해서base클래스 또는 기반 클래스라고도 합니다.
반응형
'Backend > java' 카테고리의 다른 글
클래스간의 관계 - 포함관계 (0) | 2018.08.09 |
---|---|
클래스간의 관계 - 상속관계 ( inheritance ) (0) | 2018.08.09 |
상속_연습문제_답(BookMgr) (0) | 2018.08.08 |
상속_연습문제_답 ( Book class ) (0) | 2018.08.08 |
상속_연습문제 (0) | 2018.08.08 |
@IT grow. :: IT grow.
#IT #먹방 #전자기기 #일상
#개발 #일상