Posts 객체지향 프로그래밍 - 3(Inheritence, Composition, Overriding, Super, Modifier)
Post
Cancel

객체지향 프로그래밍 - 3(Inheritence, Composition, Overriding, Super, Modifier)

상속(Inheritence)

특징

  • 어떤 클래스의 모든 멤버 변수 및 메소드를 계승하여 새로운 클래스를 생성하는 것
  • 상속 대상 : 부모 클래스
  • 상속 결과 : 자식 클래스
    1
    
    class Developer extends Person -> 상속대상 : Person, 상속결과 : Developer
    
  • 상속 관계를 흔히 ‘IS-A’ 관계라고 부른다.
  • 클래스를 상속하면, 부모 클래스의 모든 멤버 변수와 메소드를 상속 받는다.

컴포지션(Composition)

특징

  • 상속과 유사하지만, 한 클래스가 다른 클래스의 객체를 포함하는 관계
  • 내부에 포함하고 있어 ‘HSA-A’ 관계로 표현된다.
    1
    2
    3
    4
    
    class Develop{
      String name;
      Person person; // 상속 받지 않고, 클래스 내부에서 다른 클래스의 객체를 선언한다.
    }
    

메소드 오버라이딩

특징

  • 다른 클래스에서 정의한 메소드를 상속받아 재정의 하는 것.
  • 다형성(Polymorphism)의 근간이 된다.
  • 부모클래스 자료형으로 자식클래스를 받을 수 있다.
    1
    2
    
    person p = (person) developer;
    p.writeCode();
    
  • 부모 클래스로 캐스팅 됬지만 자식 클래스에서 오버라이딩된 메소드가 실행이 된다.
  • 부모 클래스 배열에 어떠한 자식 클래스도 들어갈 수 있다.
    1
    
    person[] people = new person[]{new Student(), new Dev()};
    
  • 위와 같은 방식으로 다양한 자식클래스를 효과적으로 데이터 처리할 수 있다.

Super 키워드

특징

  • this가 자신의 객체를 참조하듯, super로 부모 객체를 참조 할 수 있다.
  • 자식 클래스에서 생성자를 만들어줄 때 부모 클래스의 생성자를 먼저 호출해야 한다. 단, 부모 클래스가 기본 생성자를 사용하는 경우는 호출하지 않아도 된다.
  • super.super로 부모의 부모클래스는 참조할 수 없다. 바로 위 부모 클래스만 가능하다.
  • 부모 클래스, 자식 클래스, 로컬 메소드에 같은 이름의 변수가 지정되어 있다면 하위 계층에서 재정의하여 사용하게 된다. 이때 상위 클래스 변수가 사라지는게 아니고 하위 클래스에서 재정의한 변수에 우선적으로 접근하게된다.
    1
    2
    3
    4
    5
    6
    7
    
    class Foo{
      String x;
      }
    class Bar extest Foo{
      String x;
      public method(){String x;}
    }
    

제어자(Modifier)

특징

  • 클래스, 변수, 메소드에 부가 기능을 부여하는 키워드
  • 접근 제어자 : 접근할 수 있는 범위를 정하는 키워드
제어자같은 클래스같은 패키지다른 패키지전체
publicOOOO
protectedOOOX
defaultOOXX
privateOXXX

Today Link

This post is licensed under CC BY 4.0 by the author.

Contents

Trending Tags