코딩항해기

[JAVA] 상속 (+super, super()) 본문

JAVA

[JAVA] 상속 (+super, super())

miniBcake 2024. 7. 21. 10:25

 

 

 

상속 (Inheritance)

기존에 선언된 클래스의 멤버(생성자는 제외)를 새롭게 만들 클래스에서 사용하고 싶을 때, 상속을 받아 새로운 기능만 추가 할 수 있도록 해준다. 여러 클래스 선언 시 멤버가 겹치는 경우, 부모 클래스를 먼저 선언하여 공통멤버를 자식 클래스들에게 상속하는 방식으로 사용할 수 있다. 상속은 단일상속만 할 수 있다.

(자식 클래스는 하나의 부모 클래스만 가질 수 있다.)

 

상속문법

class Parent{
//부모클래스의 멤버(필드, 메소드)
}

class 슈퍼클래스{
//슈퍼클래스 멤버
}
class child extends Parent {
//부모클래스의 멤버
//자식클래스의 멤버
}

class 서브클래스 extends 슈퍼클래스 {
//슈퍼클래스 멤버
//서브클래스 멤버
}
  • Parents 부모클래스, 슈퍼클래스, 기반클래스, 상위클래스 (상속을 해주는 클래스)
  • Child 자식클래스, 서브클래스, 파생클래스, 하위클래스 (상속을 받는 클래스)

 

super, super()

super

부모의 참조값. 부모의 멤버에 접근할 때 사용한다. (부모의 this)

 

super()

부모 생성자 자식 클래스 타입의 객체로 부모클래스의 멤버에 접근할 수 있다.

객체를 만들 때 자식 생성자만 호출하기 때문에 자식 멤버만 메모리에 할당된다고 생각 할 수 있지만,

자식 생성자는 항상 부모 생성자를 호출한다.

 

따라서 자식의 필드를 초기화 할때 부모 필드도 초기화하는 것을 의미한다.

즉, 자식 객체를 생성하게 되면 부모 객체도 생성되게 된다. (부모 객체가 먼저 생성된다)

부모 생성자를 호출하는 방법은 super()를 사용하며, 작성하지 않더라도 컴파일러가 자동으로 작성해준다.

 

상속 없이 super나, super()를 사용하게 되면 모든 클래스의 최상위 부모인 Object를 가르키게 된다.

 

 

 

[JAVA] Up casting, Down casting

Up casting상속 관계인 자식의 값을 부모 타입으로 형변환 (자동형변환) 부모 클래스에 있는 변수나 메소드만 사용할 수 있다. ex) 부모타입 a = new 자식생성자(); Down casting업캐스팅된 객체를 다시

minibcake.tistory.com