본문 바로가기

프로그래밍/Java

상속?

상속 ( Inheritance )

 

[ 자바 상속 ]  

  ㄴ 어떤 클래스의 모든 내용(멤버필드, 메소드)을 그대로 가져온다는 뜻.

 

< 형식 >

  ㄴ 접근제한자  지정예약어  class  클래스명  extends 상위클래스 implement 상위인터페이스{

      ... }

 

 * 잠깐! 용어정리

    포함 Object : 하나의 클래스 내부에 다른 클래스의 객체를 포함하는 있는 형태.

 

Object 클래스 : 자바의 모든 클래스의 부모 클래스.

  ㄴ Object 클래스의 멤버는 생성자와 메서드 뿐이다. ( 필드는 없음 !!)

      따라서, 메서드만 상속을 받는다.

 

@ super 예약어

  ㄴ 상속관계에서 자신에게 상속한 상위 클래스를 지칭

 

=> 자신의 클래스 내에서 자신을 지칭할 때에는 this 라는 예약어를 사용하고 자신의 입장에서

    상위에 있는 멤버를 지칭할 때에는 super 라는 예약어를 사용한다.

=> 하위 클래스 생성자에서 super(); this(); 중에 아무것도 기재하지 않으면 JVM은 자동적으로

    매개변수를 가지지 않는 super(); 가 있다고 판단한다.

 

@ 필드의 상속.

=> 상위 클래스의 멤버필드가 private로 선언이 되어 있다면, 하위 클래스 객체를 생성하면, 메모리상

    에는 상위 멤버필드에 대한 값이 할당이 되지만, 상위클래스의 멤버 필드명에는 접근을 하지 못한

    다.

=> 상위 클래스와 하위 클래스에 동일한 필드명이 있을 경우 super, this 를 지정해 주어야 한다.

    지정하지 않으면 자동으로 this 로 인식한다.

 

@ 메서드의 상속.

=> "생략"

 

※ 오버로딩과 오버라이딩의 차이점.

 ㄴ 오버로딩 : 매개변수의 갯수나 자료형이 틀린, 같은 이름의 메서드에 대해서

                         " 오버로딩 " 되었다고 한다.

 ㄴ 오버라이딩 : 상속 관계에서 상위 클래스와 하위 클래스에 동일한 메서드가 있는 경우

                         " 오버라이딩 " 되었다고 한다.

 

@ 오버라이딩의 규칙 2가지.

 1) 오버라이딩 할 때는 접근 제한자의 범위가 같거나 커야한다.

    

     Ex) 상위 클래스의 메서드가 protected 라면,

           오버라이딩 하는 메서드는 protected, public 만 가능한다.

 

 2) 오버라이딩된 하위 클래스의 메서드에 throws 구문이 있으면, 상위 클래스의 오버라이딩을 준

     메서드도 반드시 해당 예외 클래스에 준하는 throws 구문이 있어야 한다.

 

     Ex) - 상위 클래스에 메서드 throws 구문이 있다면,

             하위 클래스의 메서드에는 있어도 되고, 없어도 된다.

           - 하위 클래스의 메서드에 throws 구문이 있다면,

             상위 클래스의 메서드에는 throw 구문이 반드시 있어야 한다.

 

@ final 예약어

 ㄴ 메서드 앞에서의 final은 오버라이딩을 막아주는 역할을 한다.

 

참조 : http://blog.naver.com/sskkkll?Redirect=Log&logNo=120156130400

 

'프로그래밍 > Java' 카테고리의 다른 글

인터페이스 ( interface )  (0) 2012.06.18
super 실습하기  (0) 2012.06.18
Array [ 배열 ]  (0) 2012.06.12
Varargs  (0) 2012.06.12
PACKAGE  (0) 2012.06.11