Loading...

JAVA / / 2022. 1. 14. 15:06

자바 16강. 상속

반응형

 

상속은 물려받기 위해서 사용하는 것이 아닌

추상화하기 위해 사용하는것이다.

 

상속보다는 extends(확장)의 의미에 더 가깝다.

 

물려받는다는 말도 맞는 말이지만,

주된 목적은 그게 아닌 추상화인 것이다.

 

상속의 특징을 알아보자.

 

특징 1. 이미 존재하는 클래스로부터 멤버들을 물려받는 것이다.

 

상속을 받을 때는 클래스명 오른쪽에

"extends 상속받을 클래스 명"을 적어준다.

package ex11;

class 라면 {
    int kcal = 300;
    String color = "노란색";
    String type = "국물";
}

class 매운라면 extends 라면 {
    // int kcal = 300;
    // String color = "노란색";
    // String type = "국물";
    String type2 = "고춧가루";
}

public class ExtendsEx01 {
    public static void main(String[] args) {
        라면 s1 = new 라면();

        매운라면 s2 = new 매운라면(); // kcal, color, type, type2 다 뜸
        // 라면 s2 = new 매운라면(); 도 가능, 다형성!!
    }
}

 

new 라면( ); 을 하게 되면

라면의 영역이 띄워지고,

 

new 매운 라면 ( ); 을 하면

공간이 구분되어 데이터가 뜨는 공간은 다르지만

동시에 메모리에 뜨게 된다.

 

그렇다면 아래 매운 라면의 타입이 뭘까?

 

타입도 내가 정할 수 있다.

 

타입을 정한다는 것은

메모리에 떠있는 것 중에

내가 정한 타입 공간을 가리키겠다는 말이다.

 

매운 라면으로 타입을 지정하게 되면

(매운 라면 s2 = new 매운 라면( );)

매운라면 공간을 가리키게 된다.

 

new 매운라면( ) 공간을

라면이라고도 부를 수 있고,

매운 라면이라고도 부를 수 있다는 것이다.

이게 다형성이다.

 

 

매운 라면 공간을 가리켜서 kcal, color, type변수를 찾았을 때 안 보이면

위로 스캐닝을 해, 라면 공간에서 변수를 찾아낸다.

 

그렇다면 라면 공간을 가리켰을 때 type 2를 찾을 수 있을까?

결과는 찾을 수 없다.

스캐닝은 위로만 하기 때문에 찾을 수 없는 것이다.

 

위로만 스캐닝하는 이유는 JVM의 아키텍처가 그렇게 만들어져 있다.

 

다음 내용에서 아래로 스캐닝하는 방법을 알아보자.

 

 

 

 

 

[출처]

 

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com

메타 코딩 유튜브

https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형