2016년 8월 1일 월요일

9DAY / SE / Inheritance


http://programmersnight.com
  • 상속 ( Inheritance ) 의 개념 
상속이란 부모의 멤버(인스턴스변수와 메서드)를 물려받는 것을 말한다

  • 상속의 특징
자식(sub)과 부모(super) extends keyword
ex)  class Person extends Animal{ }

   is a relationship :  사람은 동물이다 (is a 관계가 성립되었다)
 
   부모 차원에서 Encapsulation 적용된 멤버(변수,메서드)는
   상속받더라도 접근할 수 없다 (Private 명시했을 때)
   ( 접근이 필요하다면 setter/getter 를 활용해야 한다 )
 
http://jitendrazaa.com

  • 접근제어자 (access modifier)
      public > protected > default > private
   
      public : 어디서나 접근 가능
      protected : 같은 패키지내에서 접근 가능
      (단 상속관계시에는 다른 팩키지에서도 접근 가능)
      default : 같은 패키지내에서 접근 가능
      private : 자신의 클래스 내에서만 접근 가능
 

  • 상속의 원리 :   super keyword 
     상속 관계를 구성하고 자식 객체를 생성하면
     부모 객체부터 생성되어 마지막에 자식 객체가 생성된다 ( heap memory 영역 )
   
     이런 것이 가능한 이유는 생성자에는 별도 명시하지 않을 경우
     컴파일시에 생성자 실행 첫라인에 super() 코드가 자동 삽입되기 때문이다.
   
     super() 는 부모 생성자를 호출하여 객체 생성되도록 한다
   
     ex)
1
2
3
4
5
6
7
8
9
 class GrandParent{}
    class Parent extends GrandParent{}
    class Child extends Parent{} 
             
    new Child() 가 실행될 경우 객체 생성순서는? 
      GrandParent -> Parent -> Child 순서로 생성된다 
             
      자동삽입될 생성자의 형태는 
      Child(){super();}
cs
 

  • 오버로딩
   :  메서드나 생성자가 동일한 이름으로 매개변수를 달리하며
      여러번 정의하는 기법 ( 다양한 매개변수로 정의 )
      -> 사용자 편의성 증대

www.studytonight.com


  • 오버라이딩(메서드)
   : 부모에서 상속받은 메서드를
     자신에 맞게 재정의(수정)하는 기법
     -> 부모 메서드와 오버라이딩하는 자식 메서드 명이
         동일해야 하고 리턴타입 , 매개변수 또한 동일해야 한다
         접근제어자는 더 좁아지면 안된다
http://javarevisited.blogspot.kr

0 개의 댓글:

댓글 쓰기