본문 바로가기
4학기/JAVA

[JAVA] chap06. 상속

by sshnnne 2022. 11. 15.

1. 상속

: 부모 클래스에 정의된 멤버 변수, 메소드를 자식 클래스가 물려 받는 것.

 

1-1. 상속의 형식

class A extends B

자식 클래스 이름 뒤에 extends를 쓰고 부모 클래스 이름을 적는다.

 

1-2. 상속의 특징

1) 다중 상속을 지원하지 않는다. (여러 개의 클래스로부터 상속받을 수 없음. 클래스 간의 다중 상속을 지원하지 않음)

2) 상속의 횟수에는 제한이 없다.

3) 상속 계층 구조의 최상위에는 java.lang.Object 클래스가 있다.

 

1-3. 상속과 접근 지정자

자식 클래스는 부모 클래스의 public, protected 멤버, 디폴트 멤버를 상속 받지만, private 멤버는 상속되지 않음.

 

1-4. super();

super() 호출 시 부모 클래스의 생성자가 호출된다.

그러나 명시적으로 호출하지 않아도 부모 클래스에 기본 생성자가 정의되어 있는 경우 (매개 변수가 없는 생성자) 컴파일러는 부모 클래스의 기본 생성자 자동 호출하도록 함.

 

2. 메소드 오버라이딩

: 자식 클래스가 부모 클래스의 메소드를 자신의 필요에 맞추어서 재정의하는 것.

메소드의 이름, 매개 변수, 반환형은 동일하여햐 함.

 

2-1. 오버라이딩 vs 오버로딩

오버로딩 : 같은 이름을 가진 여러 개의 메소드를 작성하는 것 (매개 변수를 달리해서) -> 컴파일 시간에서의 다형성 지원

오버라이딩 : 부모 클래스의 메소드를 자식 클래스가 다시 정의하는 것 -> 실행 시간에서의 다형성 지원

 

2-2. 다형성

: 객체들의 타입이 다르면 똑같은 메시지가 전달되더라도 서로 다른 동작을 하는 것

 

3. 업캐스팅 (=상향 형변환)

: 부모 클래스 변수로 자식 클래스 객체를 참조할 수 있다. 묵시적으로 수행될 수 있다. 자식 클래스의 멤버는 접근이 불가능하다.

메소드의 매개 변수를 부모 타입으로 선언하면 훨씬 넓은 범위의 객체를 받을 수 있음.

 

4. instanceof 연산자

: 변수가 가리키는 객체의 실제 타입을 알려주는 연산자.