JAVA

태태개발일지(JAVA 상속)

태태코 2024. 1. 9. 23:13
반응형

요즘은 퇴근 길에 인프런 강의중 김영한 선생님의 Java 기본 강의를 듣고있다. 자바에 대한 완벽한 심화 강의는 아니지만, 그래도 JAVA를 앞으로 계속 사용할 거라 돈을 주고 구매한 후 쭉 듣는데 상속 부분에서 머리에 넣어야 할 부분이 생긴 것 같아서 글로 작성한다.

 

 

https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8%ED%8E%B8

 

학습 페이지

 

www.inflearn.com

 

 

 

 

 

상속의 개념.

상속 : 비슷한 속성을 가진 객체들의 부모를 만들어서 중복된 코드를 제거하고, 재사용성을 늘린다.

 

기존에 인지하던 상속?

사실 상속에 대해서 공부할 때 막연하게 그냥 외우기 만 했었는데 이 그림을 보고 머리에 박혀버려서 놀랐다.

그저 상속? 그냥 필드와 메서드만 공유하는 것 정도만 머리속에 넣어놨는데 이게 뭐람

 

실제 이해하기 쉬운 상속

위에 그림과 같이 https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard을 참조하고 있는 친구가 보고 있는 객체는 그 위의 부모객체인 Car까지 보고있다는 점.

즉 new ElectricCar() 를 통해서 객체를 생성하면 그 위의 부모 객체인 Car도 생성이 된다는 말이다.

 

*즉 new ElectricCar()의 생성자를 호출할 때 Car의 생성자를 통해 Car도 생성된다는 말이다.*

 

 

public class Car{
	
    private name;
    
    public void move(){
      System.out.println("move the car");
    }


}

<Car 객체의 코드 예시>

 

public class ElectricCar extends Car{

	public ElectricCar(){
    
    }
	
    @Override
    public void move(){
     System.out.println("");
    }


}

<ElectricCar 코드 예시>

 

 

% 만약 new ElectricCar()를 코드로 실행했을 경우에 ElectricCar() 기본 생성자를 통해서 객체를 생성한다. 그럼 Car는 어떻게 생성해? -> 여기서 자바가 편의를 위해 생략한 부분이 나온다.

ElectricCar의 기본생성자에 super() 이라고 부모의 생성자를 호출하는 코드가 생략이 된것이다. 이것이 핵심이고 이것이 상속이다.

 

 

그래서 뭐가 중요한데?

자식의 객체를 만들 때 부모의 객체도 같이 만들 기 때문에

1.  super()를 호출하는 메서드가 생략되어있지만, 부모 객체의 생성자가 기본 생성자가 아니라면 꼭 super(1,2); 이렇게 명시를 해줘야한다.

2.  코드를 실행할 때 자식에서 먼저 보고 부모로 올라가서 확인 한 후 부모도 없으면 에러를 나타낸다.

ex) electricCar.move() 를 실행했을 경우 electricCar 객체에서 먼저 확인하고, 그 후에 부모인 Car에 가서 확인후 없으면 에러를 나타낸다.

 

이 두 부분만 알고가도 크게 어렵진 않았던 것 같다. 다음은 다형성으로 돌아오겠다. 

 

개발인생 화이팅. 내 혼자힘으로 모든 개발을 완료할 때 까지  

반응형

'JAVA' 카테고리의 다른 글

태태개발일지 - Exception  (2) 2024.10.14
Java 중급 - 영한쌤  (1) 2024.03.31
태태개발일지(Legucy jdk설정)  (1) 2023.12.05
태태개발일지(멀티스레딩 java)  (0) 2023.10.18
게임 플레이하기-oop프로그래밍  (0) 2023.02.24