상속 (프로그래밍) 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
25번째 줄: 25번째 줄:
 
상속을 통해서 클래스를 작성하면, 보다 적은 양의 코드로 새로운 [[클래스]]를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 그리고 객체의 다형성을 구현 할 수 있다는 효과를 가지고 있다.
 
상속을 통해서 클래스를 작성하면, 보다 적은 양의 코드로 새로운 [[클래스]]를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 그리고 객체의 다형성을 구현 할 수 있다는 효과를 가지고 있다.
 
즉, 하위 객체에서 상위객체의 [[필드]]와 [[메소드]]를 따로 또 만들어서 사용할 필요가 없으며 상위 객체의 메소드에 문제가 있을 경우 상위 객체에서의 수정으로 인해 하위객체에서 문제가 있었던 메소드를 따로 수정할 필요없이 메소드를 사용할 수 있다.<ref name="Web Club">재희 jaiyah, 〈[https://webclub.tistory.com/169 객체 지향 프로그래밍의 상속과 다형성]〉, 《Web Club》</ref>
 
즉, 하위 객체에서 상위객체의 [[필드]]와 [[메소드]]를 따로 또 만들어서 사용할 필요가 없으며 상위 객체의 메소드에 문제가 있을 경우 상위 객체에서의 수정으로 인해 하위객체에서 문제가 있었던 메소드를 따로 수정할 필요없이 메소드를 사용할 수 있다.<ref name="Web Club">재희 jaiyah, 〈[https://webclub.tistory.com/169 객체 지향 프로그래밍의 상속과 다형성]〉, 《Web Club》</ref>
 +
 +
상속은 부모클래스로부터 멤버변수, 메소드르 상속 받는 것은 가능하지만 [[생성자]]는 상속이 불가능하다. 또한 접근권한자가 private로 선언된 멤버변수와 메서드는 상속이 불가능하다.
  
 
===장점===
 
===장점===
95번째 줄: 97번째 줄:
 
  class 자식클래스1 extends 부모클래스 { 내용 } // 가능
 
  class 자식클래스1 extends 부모클래스 { 내용 } // 가능
  
=====상속 제외=====
+
=====인터페이스=====
#상속은 부모클래스로부터 멤버변수, 메소드르 상속 받는 것은 가능하지만 [[생성자]]는 상속이 불가능하다.
 
#접근권한자가 private로 선언된 멤버변수와 메서드는 상속이 불가능하다.
 
#부모클래스와 자식클래스가 다른 패키지에 존재한다면 default 접근 권한을 갖는 메소드는 상속이 불가능하다.<ref name="thisisjava">신용권, 〈[https://www.hanbit.co.kr/store/books/look.php?p_code=B1460673937 이것이 자바다]〉, 《한빛출판네트워크》, 2015-01-06</ref>
 
 
 
=====부모생성자 호출<ref name="thisisjava"></ref>=====
 
[[파일:Extends_super.jpg|200픽셀|섬네일|오른쪽|자식 객체 생성]]
 
자식 객체 생성은 부모 객체가 생성된 후 자식 객체를 생성한다.
 
자식생성자가 부모생성자를 명시적으로 선언하지 않았다면 컴파일러가 생성하여 자식생성자의 맨 첫줄에서 호출한다.
 
부모생성자의 호출방법은 자식생성자 맨 첫 줄에 super() 키워드를 사용한다.
 
만약 매개변수가 있는 부모생성자일 경우 반드시 명시적으로 선언해야 한다.
 
public class 자식클래스 {
 
public 자식생성자() {
 
super();  //부모클래스의 부모생성자 호출
 
}
 
 
 
====인터페이스====
 
 
자바에서는 다중상속이 불가능하다. 하지만 인터페이스를 사용한다면 다중상속이 가능하다. [[인터페이스]]는 일종의 [[추상클래스]]이며 클래스처럼 메소드를 가질 수 있지만 기능을 구현할 수 없다. 그리고 멤버변수도 가질 수 없으며 상수만 가능하다.
 
자바에서는 다중상속이 불가능하다. 하지만 인터페이스를 사용한다면 다중상속이 가능하다. [[인터페이스]]는 일종의 [[추상클래스]]이며 클래스처럼 메소드를 가질 수 있지만 기능을 구현할 수 없다. 그리고 멤버변수도 가질 수 없으며 상수만 가능하다.
  
296번째 줄: 282번째 줄:
 
* 에스콸리, 〈[http://blog.daum.net/dsmcj/37 다중상속과 단일상속의 장단점]〉, 《개인블로그》, 2009-03-11
 
* 에스콸리, 〈[http://blog.daum.net/dsmcj/37 다중상속과 단일상속의 장단점]〉, 《개인블로그》, 2009-03-11
 
* joker, 〈[https://blog.naver.com/heartflow89/220960019390 상속의 개념 및 부모/자식 클래스]〉, 《개인블로그》, 2017-03-17
 
* joker, 〈[https://blog.naver.com/heartflow89/220960019390 상속의 개념 및 부모/자식 클래스]〉, 《개인블로그》, 2017-03-17
* 신용권, 〈[https://www.hanbit.co.kr/store/books/look.php?p_code=B1460673937 이것이 자바다]〉, 《한빛출판네트워크》, 2015-01-06
 
 
* 끝나지않는 프로그래밍 일기, 〈[https://blog.hexabrain.net/173 C++ 강좌 12편. 상속(Inheritance)]〉, 《개인블로그》, 2012-11-12
 
* 끝나지않는 프로그래밍 일기, 〈[https://blog.hexabrain.net/173 C++ 강좌 12편. 상속(Inheritance)]〉, 《개인블로그》, 2012-11-12
 
* 녹두장군 - 상상을 현실로, 〈[https://mainia.tistory.com/2139 자바 다중상속 인터페이스 다루는 방법]〉, 《개인블로그》, 2015
 
* 녹두장군 - 상상을 현실로, 〈[https://mainia.tistory.com/2139 자바 다중상속 인터페이스 다루는 방법]〉, 《개인블로그》, 2015

위키원에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 위키원:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)