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