기록

*16일차 (상속) 본문

학원/강의

*16일차 (상속)

pringspring 2022. 2. 14. 19:14

@상속

*정의

  - 다른 클래스가 갖고있는 멤버(필드+메소드)들을 새로 만들지않고 상속을 받음으로써 새 클래스가 자신의 멤버처럼 사용할 수 있는 기능

 

*목적

 -클래스 재사용 , 연관된 일련의 클래스들에 대해 공통적인 규약을 정의

 

 

*장점

  1. 적은 양의 코드로 새로운 클래스 작성
  2. 공통적으로 관리하기 때문에 코드의 추가 및 변경이 용이
  3. 중복을 제거하여 프로그램의 생산성과 유지보수에 기여

 

*방법

 - 상속시 extends 사용

 

*접근

*관계

1.Is a

 - 자식클래스는 하나의 부모클래스이다.

 - 부모클래스를 자식클래스가 상속한다.

 

2.Has a

 - 한 클래스의 멤버변수로 다른 클래스타입의 참조변수를 선언함

 

 

 *방법

  • 단일상속 : 클래스간의 관계가 다중 상속보다 명확하고 신뢰성 있는 코드를 작성

 

*특징

  • 부모클래스의 생성자, 초기화블록은 상속 안됨
  • 부모클래스의 필드, 메소드를 선언없이 사용할 수 있다.
  • 하나의 부모클래스만 상속할 수 있다. 단일상속
  • 모든 클래스는 Object클래스의 후손클래스
     *  - 모든 클래스는 Object의 메소드를 사용 또는 재작성할 수 있다.
     *  - equals, hashCode, toString...
  • 부모클래스 생성자, 초기화블럭은 상속되지 않는다.
     *  - 자식클래스 생성자를 별도로 작성해야 한다.
  • 부모클래스의 private필드는 상속받았다해도 직접 접근할 수 없다. 
     *  - public메소드
     *  - super() 부모생성자호출시 값전달

*super()

  • 부모객체의 생성자를 호출하는 메소드
  • 가장 먼저 실행되어야 하므로 반드시 첫 줄에만 작성 가능
  • 매개변수가 있는 부모생성자 호출은 super(매개변수,매개변수)를 넣으면 된다.

*super.

  • 부모객체의 주소가 있는 참조변수로 생각
  • 자식클래스 내에서 부모클래스 객체에 접근하여 필드나 메소드를 호출할 때 사용

 

*Overriding(오버라이딩)

-정의

  • 자식 클래스가 상속받은 부모 메소드를 재작성하는 것을 말함
  • 자식객체를 통한 실행 시 후손 것이 우선권을 가짐(동적바인딩)

-특징

  • 메소드 헤드라인 위에 반드시 Annotation 표시   ex) @Override
  • 부모메소드의 접근제어자 수정 가능 → 부모의 것보다 같거나 넓은 범위로만 변경 가능
  • 부모메소드의 예외처리 클래스 개수 수정 가능 → 예외처리 클래스 개수보다 크거나 처리범위가 넓으면 안됨
  • final class - 상속 X    //   final method - 오버라이딩 X

-성립요건

  • 이름 동일
  • 매개변수의 개수와 타입이 동일
  • 리턴 타입이 동일
  • private 메소드 오버라이딩 불가

 

 -바인딩

  • 실제 실행할 메소드 코드와 호출하는 코드를 연결시키는 것을 바인딩이라 함.

-동적바인딩

  • 컴파일시 정적바인딩된 메소드를 실행할 당시의 객체 타입을 기준으로 바인딩 되는 것을 동적바인딩이라 함.
  • 성립요건: 상속관계로 이루어져 다형성이 적용된 경우 메소드 오버라이딩이 되어있으면 바인딩 된 메소드 코드보다 오버라이딩 된 메소드 코드를 우선적으로 수행하게 된다.

 

 

 

'학원 > 강의' 카테고리의 다른 글

*18일차 (추상클래스 / 인터페이스)  (0) 2022.02.16
*17일차(다형성 / 바인딩)  (0) 2022.02.15
*15일차  (0) 2022.02.11
*14일차(생성자)  (0) 2022.02.10
*13일차  (0) 2022.02.09