2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

자바 상속(extends)의 개념 한번에 이해하기

2022. 11. 24. 23:45ㆍJAVA 기초

우리는 자바를 쓰면서 상속이란 말을 많이 들어봤다.

상속이란 어떤 개념인가? 한번 쉽게 알아보도록 해보자

상속이란 부모님에게 물려받는 것 이나 뒤를 잇는 것 이다.

이게 무슨뜻일까?

예제를 한번 보자

자 나는 Parents라는 클래스에

홍길동의 이름 나이 직업 패스워드를 적었다.

하지만 내가 작업하다가 홍길동의 상태가 필요한 상태가 되었다.

그러면 이 예제 파일을 사용할 수 없다고 하자.

그러면 이 홍길동의 상태창을 다른 소스코드에 처음부터 쳐야 하는 번거로움이 필요하다.

하지만 상속개념을 사용한다면 정말 쉽게 사용할 수 있다.

자 보이는가?

Child란 클래스에 Parents를 상속받았다.

그랬더니 child란 클래스에는 아무것도 선언된 것이 없다

하지만 저렇게 Child의 있는 내용을 전부 출력하는 것을 볼 수 있다.

이것이 상속이다.

그냥 정말 쉽게 생각하면 된다. 다른 클래스에 있는 내용을 가져와서 내용을 합친다

=즉 이것이 상속이다.

애초에 extends 의미 자체가 확장하다. 라는 뜻인데 내용을 child란 클래스에 확장 했지 않는가.

설명을 보면 뭐 부모클래스니~ 자식 클래스니~ 이런 설명이 오히려 초보자를 더 햇갈리게 한다.

그냥 쉽게 생각해서 다른 클래스있는 내용을 이 클래스로 받아서 사용한다 이 한문장만 기억하면 된다.

저기 Parents가 부모 클래스 Child가 자식 클래스라고 생각하면 된다.

우리가 변수 선언할때 기억나는가? int number = 1;

선언할때 대입이 어떤식으로 되는가?

오른쪽에서 왼쪽으로 대입연산이 적용 되는데 이 상속도 똑같다

그냥 대입 연산자 처럼 오른쪽에서 왼쪽으로 대입이 되구나..

그럼 오른쪽이 부모 왼쪽이 자식 클래스구나 라고 생각하면 된다

그리고 꼭 기억해야 할 것이 있는데

자바는 상속은 "단" 한개밖에 되질 않는다.

즉 자바는 다중상속이 되질 않고 오직 "단" 한개의 상속만을 허용한다.

이런식으로 두 개의 상속은 허용하지 않는다.

다중상속을 허용하질 않는 이유는 C++등 이런 언어가 다중상속을 허용하는 언어이지 않는가.

하지만 자바 개발자가 C++을 써보고 다중상속이 너무 불편한점이 많아서 단일 상속으로 설정 했다고 한다.

이런식으로 안된다는 것 이다. 두개의 클래스로 하나의 클래스로는 상속이 불가하다.

이런식으로는 상속이 가능하다. 하나의 클래스당 한개의 상속만을 허용한다.

엇 그러면 다중상속 너무너무 하고싶은데 방법이 없나요 ㅜㅜ?

=방법이 있다 인터페이스를 사용하면 다중상속이 가능하다.

왜 상속을 사용할까... 굳이 필요 없지 않나요..?

합당할 질문이다.

자바의 상속은 자바클래스안에서는 정말 필요하지 않을지도 몰라도

JSP,Spring만 넘어가도 상속의 개념은 절대적이다.

하지만 Jsp,spring을 배우지 않았으니 자바로 보자

여기 extends를 보면 Object클래스가 보이는가?

우리는 항상 이 Object라는 클래스는 사용하지 않았지만

자동으로 자바가 이 클래스를 상속해주고 있었다.

그게 무슨뜻이냐면 우리가 사용하는 println? main메서드?

등등 다 Object클래스에서 상속받아서 사용가능 했던 것 이다.