본문 바로가기

JAVA

[JAVA]DAY11_상속

상속(inheritance)

: 재사용

1. 새롭게 만들 클래스에서 기존에 사용 중인 클래스의 필드를
    사용하고자 한다면, 상속을 받아서 자신의 것처럼 사용한다.
2. 여러개의 클래스를 선언할 때 겹치는 필드가 있다면
    부모 클래스를 먼저 선언한 후 공통 요소들을 상속받아 사용한다.

상속 선언

class A{
    A필드
}
class B extends A{
    A, B필드
}


A : 부모 클래스, 상위 클래스, 슈퍼 클래스, 기반 클래스
B : 자식 클래스, 하위 클래스, 서브 클래스, 파생 클래스


생성자
자식 객체에서 부모 필드에 접근하기 위해서는 메모리에
부모 필드를 할당해야한다. 자식 생성자 호출 시 부모 생성자가
먼저 호출되고, 그 다음 자식 생성자가 호출된다.
따라서 자식 객체에서 부모필드에 접근할 수 있게 된다.
부모 생성자는 super()이다.

다형성(Polymorphism)
2. 오버라이딩(Overriding : 무시하기)
자식 클래스가 부모 클래스의 필드를 상속받을 때
수정하고 싶은 메소드가 있다면, 똑같은 이름으로 
자식 필드에서 선언해준다. 이것을 재정의라고 하며
오버라이딩이라고 한다.
부모 필드가 먼저 메모리에 할당된 후 자식 필드가
할당되고, 이 때 자식 메소드의 이름과 똑같은 메소드가
이미 할당되어 있다면, 새롭게 만들어지지 않고 기존
내용을 덮어 씌워 버린다.

 

10 : 부모 기능
20 : 자식 기능

int data = 10;
data = 20;
System.out.print(data) : 20

부모 메소드의 모든 기능을 자식에서 재정의한
메소드에서도 사용하고 싶다면 super.부모메소드명();
을 작성하면 된다.

"안녕" : 부모 기능
"안녕하세요" : 자식 기능

String data = "안녕"
data = data + "하세요"
System.out.print(data) : "안녕하세요"



다중 상속
하나의 자식에 둘 이상의 부모는 존재할 수 없다.
A와 B클래스가 C클래스의 부모라고 가정한다면,
두 부모에 같은 필드명이 존재했을 때 자식 C클래스에서는 사용 시
어느 부모의 필드인지를 알 수가 없다.  이것을 모호성이라고 하며,
extends 키워드에서는 다중 상속을 지원하지 않는다. 

'JAVA' 카테고리의 다른 글

[JAVA]DAY13_casting, instanceof  (0) 2020.03.16
[JAVA]DAY12_접근 권한 제어자  (0) 2020.03.16
[JAVA]DAY10_클래스 배열  (0) 2020.03.16
[JAVA]DAY9_클래스  (0) 2020.03.16
[WEB]DAY7_메소드  (0) 2020.03.16