상속

김경환·2021년 8월 26일

java

목록 보기
6/13

클래스 상속

새로운 클래스를 정의할 때 이미 구현된 클래스를 상속받아 속성이나 기능을 확장하여 클래스를 구현이 가능하다.
원래의 클래스 보다 구체적인 기능을 구현하고자 할 때 사용한다.
Extends를 이용하여 상속받는다.

Ex)
Class B extends A{

} //B가 하위 클래스 A가 상위 클래스

Protected 접근 제어자

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

Super 키워드

하위 클래스에서 가지는 상위클래스에 대한 참조 값

  • Super()로 상위 클래스의 기본 생성자를 호출한다.
  • 하위 클래스에서 명시적으로 호출하지 않으면 컴파일러에 의해 super()자동으로 호출된다.
  • 상위 클래스의 기본 생성자가 없고 다른 생성자가 있는 경우 super(a,b)처럼 형식을 맞추어 호출이 가능하다.
  • Super는 상위 클래스 인스턴스의 참조 값을 가지므로 super를 이용하여 상위 클래스의 메서드나 멤버 변수에 접근 가능하다.

형 변환(업캐스팅)

상위 클래스로 변수를 선언하고 하위 클래스의 생성자로 인스턴스를 생성한다.

Ex) 나는 사각형이지만 정사각형에 해당하는 것만 쓸게

상속 관계에서 모든 하위 클래스는 상위 클래스로 형변환이 가능하다.

메서드 호출과 실행

메서드의 이름은 주소값을 나타낸다.
메서드는 명령어의 set이고 프로그램이 로드되면 메서드 영역에 명령어 set이 위치한다.
해당 메서드가 호출되면 명령어 set이 있는 주소를 찾아 명령어가 실행된다.

이때 메서드에서 사용하는 변수들은 스택 메모리에 위치하게 된다.
인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만 메서드 명령어 set은 처음 한 번만 로드 된다.

다운 캐스팅

업 캐스팅된 클래스를 다시 원래의 타입으로 변환하는 것이다.
하위 클래스로의 형 변환은 반드시 명시적으로 해야 한다.

0개의 댓글