ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 클래스 상속
    Language/Java 2021. 6. 5. 22:26



    클래스 상속

    • 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속받아서 속성이나 기능을 확장하여 클래스를 구현한다.
    • 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야할 때 기존 클래스를 상속
    • 상속하는 클래스(super class), 상속받는 클래스(sub class)

     

    클래스 상속 문법

    class B extends A{

    }
    • extends 키워드 뒤에는 하나의 클래스만 올 수 있다.
    • 클래스 B는 A클래스를 상속 받았음을 알 수 있다.
    • 자바는 단일 상속만을 지원한다.


    상속을 구현하는 경우

    • 상위 클래스는 하위 클래스보다 더 일반적인 개념과 기능을 가진다.
    • 하위 클래스는 상위 클래스보다 더 구체적인 개념과 기능을 가진다.
    • 하위 클래스가 상위 클래스의 속성과 기능을 확장한다는 의미

     

    protected 접근 제어자

    • 상위 클래스에 선언된 private 멤버 변수는 하위 클래스에서 접근 할 수 없다.
    • 외부 클래스는 접근 할 수 없지만, 하위 클래스는 접근할 수 있도록 protected접근 제어자를 사용한다.

     

    하위 클래스 생성 과정

    • 하위 클래스를 생성하면 상위 클래스가 먼저 생성된다.
      => 하위 클래스의 생성자에서 super( )가 실행된다. 그렇기 때문에 상위 클래스의 생성자가 호출이 먼저 된다.
    • 클래스가 상속 받은 경우 하위클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출한다.
    • 묵시적 생성자가 상위클래스에 존재하지 않을 경우 하위 클래스에서 명시적으로 생성자를 작성해주어야 한다.
    • 항상 상위 클래스의 인스턴스가 먼저 생성되고, 하위 클래스의 인스턴스가 생성된다.

     

    super( )

    • 하위 클래스에서 갖는 상위 클래스의 값
      => 멤버 변수 접근이나, 메서드 등 접근 가능하다.
    • super( )은 상위 클래스의 기본 생성자를 호출한다.
    • 하위 클래스에서 명시적으로 상위 클래스의 생성자를 호출하지 않으면 super( )가 자동으로 호출된다.
      => 상위 클래스에 생성자가 무조건 존재해야 한다.
    • 상위 클래스의 기본 생성자가 없는 경우 하위 클래스에서는 생성자는 super를 이용하여 명시적으로 상위 클래스의 생성자를 호출한다.
    • super는 생성된 상위 클래스 인스턴스의 참조 값을 가지므로 super를 사용하여 상위 클래스의 멤버 변수나 메서드에 접근할 수 있다.

     

    형 변환(업 캐스팅)

    • 상위 클래스로 변수를 선언하고 하위 클래스의 생성자로 인스턴스를 생성가능
    Customder customerKim = new VIPCustomer( );
    => Customer클래스는 VIPCustomer클래스의 상위 클래스이다.
    • 상위 클래스 타입의 변수에 하위 클래스 변수가 대입가능
    VIPCustomer vipCustomer = new VIPCustomer( );

    addCustomer(vipCustomer);

    int addCustomer(Customer customer){

    }
    • 하위 클래스는 상위 클래스의 타입을 내포하고 있으므로 상위 클래스로의 묵시적 형 변환이 가능하다.
    • 상속 관계에서 모든 하위 클래스는 상위 클래스로 형 변환이 된다.
      => 그 역은 성립하지 않는다.

     

    오버라이딩(Overriding)

    • 하위 클래스에서 상위 클래스의 메서드를 재정의 할 경우 오버라이딩을 한다.
      => @Override
    • 상위 클래스에 정의된 메서드 구현 내용이 하위 클래스에서 구현할 메서드와 맞지 않는 경우 하위 클래스에서 동일한 이름을 갖는 메서드를 재정의 할 수 있다.

     

    댓글

[Everything's gonna be fine]